ฉันเป็นวัตถุจับเวลา ฉันต้องการให้มันทำงานทุกนาที โดยเฉพาะอย่างยิ่งควรเรียกใช้OnCallBack
วิธีการและไม่ได้ใช้งานในขณะที่OnCallBack
วิธีการทำงาน เมื่อOnCallBack
วิธีการเสร็จสิ้น (a OnCallBack
) จะเริ่มการจับเวลาใหม่
นี่คือสิ่งที่ฉันมีในตอนนี้:
private static Timer timer;
private static void Main()
{
timer = new Timer(_ => OnCallBack(), null, 0, 1000 * 10); //every 10 seconds
Console.ReadLine();
}
private static void OnCallBack()
{
timer.Change(Timeout.Infinite, Timeout.Infinite); //stops the timer
Thread.Sleep(3000); //doing some long operation
timer.Change(0, 1000 * 10); //restarts the timer
}
อย่างไรก็ตามดูเหมือนว่าจะไม่ทำงาน มันทำงานเร็วมากทุกๆ 3 วินาที แม้ว่าจะเพิ่มระยะเวลา (1,000 * 10) ดูเหมือนว่ามันจะเมิน1000 * 10
ฉันทำอะไรผิด?
Timer.Change
: "ถ้า dueTime เป็นศูนย์ (0) วิธีการโทรกลับจะถูกเรียกใช้ทันที" ดูเหมือนว่าจะเป็นศูนย์สำหรับฉัน