我想有一個定時器,它的間隔考慮回調調用時間。C#定時器考慮回調時間
例如,如果定時器間隔是1000毫秒,回調invokation需要大約500毫秒,然後 T0 = 0,T1 = 1500,T2 = 3000
顯然我不想存儲invokation時間(或它的平均)在一個領域,我希望它能夠儘可能完美地工作。
我有點解決它,但它看起來很糟糕。
System.Timers.Timer timer = new System.Timers.Timer(1000);
timer.Elapsed += (sender, args) =>
{
timer.Stop();
Console.WriteLine(args.SignalTime);
Thread.Sleep(500); //instead!!!, there is something with Db and logistics.. no really a thread sleep
timer.Start();
};
timer.Start();
它是唯一的解決方案還是在C#中有任何內置功能?
這看起來完全等同於''Sleep'(1000)'運行'Thread',最後。 – Sinatr
請忽略線程在調用中的睡眠。 Thread.sleep isnt釋放線程池中的線程,同時定時器處理線程。 –
我認爲@Sinatr的意思是,你想要的是相當於運行該方法,然後在單獨的線程中睡1秒一個循環。你不需要計時器。 –