Saya memiliki objek pengatur waktu. Saya ingin ini dijalankan setiap menit. Secara khusus, itu harus menjalankan OnCallBack
metode dan menjadi tidak aktif saat OnCallBack
metode sedang berjalan. Setelah OnCallBack
metode selesai, itu (a OnCallBack
) memulai ulang pengatur waktu.
Inilah yang saya miliki sekarang:
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
}
Namun, sepertinya itu tidak berhasil. Ini berjalan sangat cepat setiap 3 detik. Bahkan jika menaikkan periode (1000 * 10). Sepertinya itu menutup mata1000 * 10
Apa kesalahan yang telah aku perbuat?
Timer.Change
: "Jika dueTime adalah nol (0), metode callback akan segera dipanggil.". Sepertinya itu nol bagi saya.