2015-08-17 16 views
-5

我正在使用System.Threading.Timer定時器對象。我需要在tick方法中暫停計時器,以便我可以做一些事情,然後重新啓動計時器以再次開始計時。如何暫停c#中的定時器一段時間然後重新啓動它

private async void timer1_Tick(object sender, EventArgs e) 
    { 
     timer1.Stop(); 
     timer1.Enabled = false; 

     if (btn7) 
     { 
      timer.Stop(); 
     } 
     fetch_hashtag(); 
     br2(); //posting in hashtages 
     Console.WriteLine("waiting"); 
     while (timer1.Enabled == false) 
     { 
      Application.DoEvents(); 
      if (webBrowser2.Url.AbsoluteUri.Contains("blank")) 
       timer1.Enabled = true; 
     } 
     await Task.Delay((int)TimeSpan.FromMinutes(double.Parse(textBox4.Text)).TotalMilliseconds); 
     timer1.Start(); 
    } 

private async void timer1_Tick(object sender, EventArgs e) 
{ 
    timer1.Enabled = false; 
    timer1.Stop(); 
    timer1.Tick -= timer1_Tick; 

    // do some stuff 

    timer1.Enabled = true; 
    timer1.Start(); 
    timer1.Tick += timer1_Tick; 
} 
+4

你的問題是什麼? – SLaks

+2

請考慮使用「await Task.Delay()'循環。 – SLaks

+3

我不確定你在問什麼,但我會告訴你很多。你所做的事情遠遠超過需要的,而在'Enabled'和'Stop()'的情況下,它只是多餘的。 –

回答

0

我需要暫停計時器滴答方法裏面,這樣我可以做一些 的東西,然後重新啓動計時器重新開始打勾。

Tick()事件是System.Windows.Forms.TimerSystem.Threading.Timer。無論如何,只需撥打Stop(),做你的「東西」,然後再撥打Start()

private async void timer1_Tick(object sender, EventArgs e) 
{ 
    timer1.Stop(); 

    // do some stuff 

    timer1.Start(); 
} 
+0

我已經做到了這一點,但它運行不正常 @Idle_Mind – m1m6

+0

工作不正常,怎麼樣?更詳細地解釋它是如何工作的,以及關於你正在做的「東西」的更多信息... –

+0

我從twitter獲取趨勢標籤,然後在每個標籤中發佈推文 我需要每分鐘做這件事, 發生了什麼事:首先獲取主題標籤,並開始發佈此過程花費超過一分鐘,因此在它發佈之前,我首先得到的主題標籤...計時器發出新請求並在前一個過程完成之前獲取另一個主題標籤... – m1m6

相關問題