Tôi có một đối tượng hẹn giờ. Tôi muốn nó được chạy mỗi phút. Cụ thể, nó sẽ chạy một OnCallBack
phương thức và không hoạt động trong khi một OnCallBack
phương thức đang chạy. Khi một OnCallBack
phương thức kết thúc, nó (a OnCallBack
) khởi động lại bộ đếm thời gian.
Đây là những gì tôi có ngay bây giờ:
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
}
Tuy nhiên, nó dường như không hoạt động. Nó chạy rất nhanh sau mỗi 3 giây. Ngay cả khi tăng một khoảng thời gian (1000 * 10). Có vẻ như nó nhắm mắt làm ngơ1000 * 10
Tôi đã làm gì sai?
Timer.Change
: "Nếu thời gian đến hạn bằng không (0), phương thức gọi lại được gọi ngay lập tức.". Có vẻ như nó bằng không đối với tôi.