In einem VSTO-Add-In, das ich entwickle, muss ich eine Methode mit einer bestimmten Verzögerung ausführen. Das Schwierige daran ist, dass die Methode zwischen 0,1 und 1 Sekunde für die Ausführung benötigen kann. Ich verwende derzeit eine System.Timers.Timer
wie diese:
private Timer tmrRecalc = new Timer();
// tmrRecalc.Interval = 500 milliseconds
private void tmrRecalc_Elapsed(object sender, System.Timers.ElapsedEventArgs e){
// stop the timer, do the task
tmrRecalc.Stop();
Calc.recalcAll();
// restart the timer to repeat after 500 ms
tmrRecalc.Start();
}
Die im Grunde startet, wirft 1 vergehen Ereignis, nach dem es für die beliebige Länge Aufgabe ausgeführt wird gestoppt. Aber der UI-Thread scheint für 3-5 Sekunden zwischen jeder Aufgabe zu hängen.
Haben Timer eine "Aufwärmzeit" für den Start? Dauert es deshalb so lange, bis die erste (und letzte) Zeit verstrichen ist?
Welche Art von Zeitschaltuhr kann ich stattdessen verwenden?