我创建了一个函数,我在其中创建了System.Timers.Timer,并在新线程中调用了新函数。但我的第一个函数不等待timer.Stop执行并在调用timer.Start()
后返回值当我在函数返回之前添加此代码时:
while(timer.Enabled)
{
Thread.Sleep(2000);
}
永远不会调用计时器函数:/
我做错了什么?
答案 0 :(得分:0)
如果您查看MSDN文档,您会看到以下注释(我怀疑这是正在发生的事情,但没有额外的代码,这是不可能的):
事件处理方法可能同时在一个线程上运行 另一个线程调用Stop方法或设置Enabled属性 为假。这可能导致Elapsed事件在之后被提升 计时器停止。 Stop方法的示例代码显示了一个 避免这种竞争条件的方法。
http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx