2012-02-27 83 views
-2

爲什麼Vote();函數不能在此計時器中運行?爲什麼函數不在這個定時器內運行?

消息框一個作品,但投一個沒有

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

提供'投票()'函數的代碼。 – 2012-02-27 05:48:44

+0

當你點擊'MessageBox'的Ok'時它會運行嗎? – V4Vendetta 2012-02-27 05:49:00

+0

是V4和Sai:http://pastebin.com/f1yKBCAH – user1233208 2012-02-27 05:53:17

回答

1

Timer.Elapsed事件抑制所有的異常,造成你沒有看到任何錯誤。在Elapsed事件中添加自己的錯誤處理以查看失敗的情況。

MSDN

定時器組件捕獲並抑制由事件處理程序經過的事件引發的所有異常。此行爲在未來的.NET Framework版本中可能會發生變化。

+0

呃,沒有。在Windows中使用斜槓作爲路徑分隔符是完全正確的。 – 2012-02-27 06:26:48

+0

@ Christian.K,我從來不知道。謝謝!有什麼想法何時推出?編輯我的答案,以保持事實的直觀。 – 2012-02-27 22:00:52

+0

我沒有任何參考,但我知道它,因爲「Windows NT」,我猜。無論如何,[這個SO問題](http://stackoverflow.com/q/7314606/21567)有關於Windows上的目錄分隔符的更多信息(提示:韓文版等;-) – 2012-02-28 05:16:29

0

定時器計時代碼可以在一個單獨的線程中運行。如果是這樣,你可能會有一個交叉線程違規。無法確定沒有看到投票的代碼。如果你想確保lambda正在運行,寫出一個消息,控制檯將比使用winform對話框更少破壞性。

相關問題