Есть "функция" которая может выполняться 30 секунд, а может 30 минут. Поэтому промежуток времени должен быть не между двумя вызовами функции, а одним завершением функции и ее следующим вызовом. Пока это выглядит как-то так (это не реальный код, а пример, так что не нужно бомбить):
public class MyBackgroundWorker : BackgroundWorker
{
public Boolean Terminated = false;
protected override void OnDoWork(DoWorkEventArgs e)
{
while (true)
{
MyFunc(); // время выполнения данной функции неизвестно
Thread.Sleep(60000);
if (Terminated)
return;
}
}
}
В данном примере приходится ждать 10 минут для корректного завершения работы потока.
Этот вариант просто первое что пришло в голову.
Как вообще правильно реализовать повторяющиеся действия через определенный промежуток времени?