功能返回不等待定时器停止

时间:2012-10-15 16:46:55

标签: multithreading .net-4.0 timer

我创建了一个函数,我在其中创建了System.Timers.Timer,并在新线程中调用了新函数。但我的第一个函数不等待timer.Stop执行并在调用timer.Start()

后返回值

当我在函数返回之前添加此代码时:

while(timer.Enabled)
{
Thread.Sleep(2000);
}
永远不会调用

计时器函数:/

我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果您查看MSDN文档,您会看到以下注释(我怀疑这是正在发生的事情,但没有额外的代码,这是不可能的):

  

事件处理方法可能同时在一个线程上运行   另一个线程调用Stop方法或设置Enabled属性   为假。这可能导致Elapsed事件在之后被提升   计时器停止。 Stop方法的示例代码显示了一个   避免这种竞争条件的方法。

http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx