为什么函数不在这个计时器内运行?

时间:2012-02-27 05:40:55

标签: c#

为什么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();
}

在此代码中投票超过此功能,谢谢,Oliver。

2 个答案:

答案 0 :(得分:1)

Timer.Elapsed事件会抑制所有异常,导致您看不到任何错误。在Elapsed事件中添加您自己的错误处理,以查看失败的原因。

来自MSDN

  

Timer组件捕获并抑制事件处理程序为Elapsed事件抛出的所有异常。在将来的.NET Framework版本中,此行为可能会发生更改。

答案 1 :(得分:0)

经过的计时器代码可以在单独的线程上运行。如果是这样,您可能会发生交叉线程违规。没有看到投票代码就无法确定。如果你想确保lambda正在运行,那么写一个消息就会比使用winform对话框更具破坏性。