2012-02-26 129 views
-4

我的計時器無法正常工作。 有人能告訴我什麼是錯的?計時器無法正常工作? C#

public void Timer() 
    { 

     DateTime targetDate = DateTime.Now; 
     if (DateTime.Now > targetDate) 
     { 
      int Now = DateTime.Now.Hour; 
      string dtNow = Now.ToString(); 
      targetDate = DateTime.Now.AddMinutes(1); 
      int targetdate = targetDate.Hour; 
      string TD = targetdate.ToString(); 

      if (Now == targetdate){ 
      Vote(); 
      } 
     } 

    } 

當目標日期等於時間現在,它應該運行投票功能。

感謝, 奧利弗

+8

在大多數情況下,「DateTime.Now」不會大於「DateTime.Now」。 – Groo 2012-02-26 00:22:01

+0

投票永遠不會運行因爲datetime.now永遠不會比datetime.now更大 – 2012-02-26 00:23:01

+0

這看起來像是比較代碼是否在同一小時內運行。那是對的嗎? – 2012-02-26 00:24:46

回答

1

我的意思並不是無禮,但我想你混淆了你做了什麼,這是「定時」的名稱,以創建方法與創建的概念類型定時器的對象(如System.Timers.Timer),然後您可以創建一個tick事件的委託來測試當前時間並調用投票方法...

總而言之,問題在於你偏離正軌。 ..

1

你的電腦的時鐘與CPU時鐘頻率相比非常慢負責你代碼的執行速度。這意味着可以執行很多代碼,直到時鐘使其下一個刻度爲


UPDATE:

另外,我不明白你的邏輯。如果你想投的每一分鐘,你應該做這樣的事情

private DateTime targetDate = DateTime.Now.AddMinutes(1); 

public void Timer() 
{ 
    DateTime now = DateTime.Now; 
    if (now > targetDate) { 
     targetDate = now.AddMinutes(1); 
     Vote(); 
    } 
} 

然而,使用System.Timers.Timer爲cos卡利斯指出,似乎更爲合適。