У меня есть этот код:
void Main()
{
System.Timers.Timer t = new System.Timers.Timer (1000);
t.Enabled=true;
t.Elapsed+= (sender, args) =>c();
Console.ReadLine();
}
int h=0;
public void c()
{
h++;
new Thread(() => doWork(h)).Start();
}
public void doWork(int h)
{
Thread.Sleep(3000);
h.Dump();
}
Я хотел посмотреть, что произойдет, если интервал составляет 1000 мс, а процесс задания - 3000 мс.
Однако я увидел странное поведение - задержка 3000 мс происходит только при запуске!
Как я могу сделать каждый doWork
sleep 3000 мс?
Как вы можете видеть здесь, сначала начинается 3-секундная задержка, а затем выполняется итерация по 1 секунде.