मेरे पास एक टाइमर ऑब्जेक्ट है। मैं चाहता हूं कि इसे हर मिनट चलाया जाए। विशेष रूप से, यह एक OnCallBack
विधि चलाना चाहिए और एक OnCallBack
विधि चल रही है, जबकि निष्क्रिय हो जाता है। एक बार एक OnCallBack
विधि समाप्त होने के बाद, यह (ए 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 सेकंड में बहुत तेज चलता है। भले ही एक अवधि (1000 * 10) बढ़ा दें। ऐसा लगता है जैसे यह एक आँख बंद कर लेता है1000 * 10
मैंने गलत क्या किया?
Timer.Change
: "यदि देयता शून्य (0) है, तो कॉलबैक विधि तुरंत लागू की जाती है।" ऐसा लगता है कि यह मेरे लिए शून्य है।