2009-09-22 42 views
1

我正在寻找一种方法,我可以确保没有回调等待我呼吁停止()就可以了后一个System.Timers.Timer线程执行。C#定时/赛 - 冲洗定时器螺纹

基本上我有一个计时器和一个异步插座 - 无论任一时间的流逝或接收到新的数据包时一个可以调用适当的功能。当然,我不希望这两种事情都能一次发生。

在我通过使用一个互斥体保护各功能的内部的那一刻:

if (!_mutex.WaitOne(0, true)) 
{ 
    return; 
} 
_TimeOut.Stop(); 
... // function body goes here 
_mutex.ReleaseMutex(); 

在计时器有一些这需要经过的时间和事件之间发生的操作被解雇,从而使即使在停止定时器之后,一旦互斥体被释放,回调将被执行。上面的代码意味着什么都没有。

那么,是不是可以确定定时器的内部运行上线? ,要么迫使它的回调函数,或阻塞,直到功能齐备,让aboce代码照顾的东西呢?

谢谢。

回答

0

在回调或事件处理程序,您必须经常检查,如果计时器在做任何事情之前实际上已启用。

+0

不幸的是我的插座回调重启定时器 - 这意味着它将会被启用应这种情况下出现的。 – 2009-09-23 01:03:45