В надстройке VSTO, которую я разрабатываю, мне нужно выполнить метод с определенной задержкой. Сложная часть заключается в том, что для выполнения метода может потребоваться от 0,1 с до 1 секунды. Я в настоящее время использую System.Timers.Timer
так:C# - Повторение вызова метода с использованием таймеров
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();
}
Который в основном начинается, возникает событие 1 истечь, после чего он будет остановлен для произвольной задачи длины выполняется. Но поток пользовательского интерфейса, кажется, вешает трубку в течение 3-5 секунд между каждой задачей.
У таймеров есть время прогрева? Неужели это так долго для его первого (и последнего) истечения?
Какой тип таймера я использую вместо этого?
Работает ли функция 'Calc.recalcAll()' с любыми элементами управления пользовательского интерфейса? – dan
Да, это необходимо. –