2012-05-22 67 views

回答

3

如何檢查計時器時間?

你不行。定時器類沒有辦法檢查定時器發生火災之前剩餘的時間。你可以做的最好的是跟蹤計時器最後一次觸發的時間,並計算自己在下一次計時之前剩餘的時間。

+0

謝謝。我可以:timer1.Start();並通過DateTime函數計算下一次計數時間。我對嗎? – annayak

+1

沒錯。每當計時器滴答或者啓動時,您都必須記下時間。然後,如果您想知道下一個時間點到期還有多久,請再次讀取時間並計算已經過了多長時間。但計時課不會告訴你這一點。 –

+0

好的。謝謝)你的建議非常有用。對不起,我不能加上它。 – annayak

0

但我不能:

這是因爲小於號等號之前來到,而不是倒過來

<==<

if (timer1.Interval <= 5000) 
{ 
    //do something 
} 
+0

在這段代碼中有不同的錯誤。請參閱David Heffernan的回答。 – annayak

0

你是使用Interval這是一個不會被改變的屬性(它總是5000,所以檢查它是否小於5000是p ointless)。此外,如果此代碼位於Timer1_Tick函數中,它將不會有效。不過,我相信你需要的代碼是:

if (timer1.Interval <= 5000) 
{ 
    //do something 
} 
+0

我知道Interval唯一的屬性。但我不知道我需要檢查什麼。 – annayak

1

您可以使用間隔爲1000(毫秒)的替代計時器。我認爲1毫秒的間隔不是真正的選擇,因爲這會給系統帶來太多的壓力,並且無論如何都是不可靠的。

每到這個計時器到期,你可以在主定時器啓動或檢查(這是永遠的1000多種?)蜱的數量和減去它(或使用模)5000

2
 DateTime MainTimer_last_Tick = DateTime.Now; 
     System.Windows.Forms.Timer timer_Calc_Remaining; 
     timer_Calc_Remaining.Enabled = true; 
     timer_Calc_Remaining.Interval = 100; 
     timer_Calc_Remaining.Tick += new System.EventHandler(this.timer_Calc_Remaining_Tick); 

打勾:

timer_Main.Enabled = true; 
     MainTimer_last_Tick = DateTime.Now; 


private void timer_Calc_Remaining_Tick(object sender, EventArgs e) 
     { 
      int remaining_Milliseconds = (int)(MainTimer_last_Tick.AddMilliseconds(timer_Main.Interval).Subtract(DateTime.Now).TotalMilliseconds); 
.../* 
     int newValue = (timer_Main.Interval -remaining_Milliseconds) ; 


     progressBar1.Maximum = timer_Main.Interval+1; 

     progressBar1.Value = newValue ;*/ 



    } 
相關問題