2012-02-27 31 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对话框更少破坏性。

相关问题