2013-12-10 241 views
0

如何在C#中執行無限循環,每次迭代延遲1分鐘?如何在C#中進行無限循環,每次迭代延遲1分鐘?

有沒有辦法做到這一點沒有使用某種變量與X + +和設置X一些令人難以置信的大數?

+1

使用while循環...? – Zinthos

+0

我不明白你想要做什麼。你應該發佈一些代碼。 – Gabe

+0

你想循環,做相同的過程,除了這個一分鐘門檻外沒有其他計數器嗎? –

回答

3
for(;;) 
{ 
    //do your work 
    Thread.Sleep(60000); 
} 

這不是最佳的,但確實是它的要求。

+5

我不喜歡「for(;;)」 - 太神祕了,我更喜歡「while(true)」。 – Polyfun

+0

@ShellShock個人觀點 - 我沒有使用編程語言,所以我更習慣它。 –

3
while (true) 
{ 
    System.Threading.Thread.Sleep(60000); 
} 

現在,如果我們假定你不希望這個線程阻塞,你真行處理線程的關注,你可以做這樣的事情:

System.Threading.Tasks.Task.Run(() => 
{ 
    while (true) 
    { 
     // do your work here 
     System.Threading.Thread.Sleep(60000); 
    } 
}); 

Task會把你的工作在一個ThreadPool線程上,所以它在後臺運行。

如果這更適合您的需要,您還可以查看BackgroundWorker

0

從類似的問題上MSDN: >

System.Threading.Thread.Sleep(5000); 

此代碼使您的應用程序等待5秒鐘。

根據需要改變你想睡覺的時間(一分鐘,這將是60000)的數量。 你可以把這個地方你想在你的while循環

+0

Downvoter - 這個答案錯了​​嗎? – Krease

0
while(true){ 
    Sleep(60000);} 

這將是一個阻塞調用,所以你會希望把它放在自己的線程或任何類型的用戶界面,你將不得不將掛起嚴重。

Sleep位於System.Threading.Thread命名空間中。

8

解決方法1: 如果你想爲wait沒有1 minute掛您的Main Thread,這是很好的使用Timer控制。

第1步:您需要訂閱Timer Tick活動。
步驟2:TimerInterval屬性設置爲60000毫秒,以提高每個分鐘的事件。
第3步:Tick Event Handler只是做你想要執行的任何事情。
第4步:只要你想停止定時器,你可以調用timer1.Stop()方法。

注意:如果你不stoptimer變得infinite。 如果你想stoptimer你可以叫timer1.Stop();

System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer(); 
    timer1.Interval=60000;//one minute 
    timer1.Tick += new System.EventHandler(timer1_Tick); 
    timer1.Start(); 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     //do whatever you want 
    } 

解決方案2:

編輯:從下面的註釋:如果OP(樓主)正試圖從運行此Console ApplicationSystem.Timers.Timer可以使用

注意:代替處理Tick事件,OP必須處理Elapsed事件。

完整代碼:

class Program 
    { 
     static System.Timers.Timer timer1 = new System.Timers.Timer(); 
     static void Main(string[] args) 
     { 
      timer1.Interval = 60000;//one minute 
      timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick); 
      timer1.Start(); 
      Console.WriteLine("Press \'q\' to quit the sample."); 
      while (Console.Read() != 'q') ; 
     } 
     static private void timer1_Tick(object sender, System.Timers.ElapsedEventArgs e) 
     { 
      //do whatever you want 
      Console.WriteLine("I'm Inside Timer Elapsed Event Handler!"); 
     } 
    } 
+0

絕對是最乾淨的選擇,它也會將定時控制移到由時間 – Krease

+3

+1執行的功能之外,因爲雖然它不是他詢問的確切問題的答案,但它是我認爲很可能是問題的答案他真的應該一直在問。 IYKWIMAITYD。 –

+0

這對於WinForms來說是一個很好的(正確的)答案,但是在使用WinForms的問題中沒有任何跡象。 – Tesserex