2012-02-26 25 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

+0

投票は決して実行されません。datetime.nowは決してdatetime.nowより大きくない –

+0

これは、コードが同じ時間に実行されているかどうかを比較しているようです。あれは正しいですか? –

答えて

1

私は失礼であることを意味するものではありませんが、私はあなたが何をしたか混乱していると思います(System.Timers.Timerのような)タイプタイマーのオブジェクトは、現在の時間をテストして投票メソッドを呼び出すためのダニイベントの代理人を作成する可能性があります。

要するに、問題はあなたです。 ..

1

ご使用のPCの時計は、CPUクロック周波数と比べて非常に遅いです。あなたのコードの実行速度を担当します。これは、タイムクロックが次の時刻になるまで多くのコードを実行できることを意味します。


UPDATE:

また、私はあなたのロジックを理解していません。あなたは毎分を投票したい場合は、コスCallisが示唆するように、より適切と思わSystem.Timers.Timer使用して、しかしこの

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

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

ような何かを行う必要があります。

関連する問題