2012-02-27 14 views
-2

なぜこのタイマーでVote();関数が実行されないのですか?なぜこの関数はこのタイマー内で実行されませんか?

1は、しかし、1つは

public void Timer() 
{ 
     var timespan = new TimeSpan(0, 0, 20); 
     var timer = new System.Timers.Timer(timespan.TotalMilliseconds); 
     timer.Elapsed += (o, e) => 
     { 
      MessageBox.Show("Worked"); 
      Vote(); 
     }; 
     timer.Start(); 
} 

投票はこのコード、おかげで、オリバー以内に、この機能の上ではありません投票働くメッセージボックス。

+0

'Vote()'関数のコードを提供します。 –

+0

'MessageBox'に対して' Ok'をクリックすると動作しますか? – V4Vendetta

+0

はいV4とsai:http://pastebin.com/f1yKBCAH – user1233208

答えて

1

イベントはすべての例外を抑制し、エラーを表示しません。 Elapsedイベントで独自のエラー処理を追加して、何が失敗しているのかを確認してください。 MSDNから

Timerコンポーネントの漁獲量とElapsedイベントのイベントハンドラによってスローされるすべての例外を抑制することができます。この現象は、.NET Frameworkの将来のリリースで変更される可能性があります。

+0

Uhm、no。 Windowsのパス区切り記号としてスラッシュを使用することは完全にOKです。 –

+0

@ Christian.K、私はそれを知らなかった。ありがとう!それがいつ紹介されたのか?事実を真っ直ぐに保つために私の答えを編集しました。 –

+0

私は参照がありませんが、 "Windows NT"以来、私はそれについて知っていました。とにかく、[このSOの質問](http://stackoverflow.com/q/7314606/21567)は、Windows上でのディレクトリ区切りの詳細を持っています(ヒント:韓国語版など;-) –

0

経過タイマコードは、別のスレッドで実行できます。もしそうなら、あなたはクロススレッド違反を起こす可能性があります。投票のコードを見ることなく、わからない。ラムダがメッセージの書き込みを実行していることを確認したい場合は、winformダイアログボックスを使用するよりも、コンソールの混乱を避けることができます。

関連する問題