使用.Change重置System.Threading.Timer

时间:2015-09-27 10:42:54

标签: c# multithreading timer

请有人请澄清System.Threading.Timer的正确用法。

我有一个服务器客户端确认响应模型。如果在一段时间后没有收到确认,我打算做的是从服务器重新发送记录的消息。

因此,当发送第一条消息时,我存储了一个Timer;

AutoResetEvent autoEvent = new AutoResetEvent(false);
TestsTimeout timeout = new TestsTimeout(firstTest, _socket);

TimerCallback resendCallback = timeout.ResendMessage;
Timer timeoutTimer = new Timer(resendCallback, autoEvent, timeoutPeriod, timeoutPeriod);

然后,当收到对消息的确认时,我只想重置时间并发送下一条消息。

timeout.Change(0, timeoutPeriod);

现在,我按照MSDN示例,但是,0似乎立即调用回调?它是否正确?这样做的核心方法是什么?

1 个答案:

答案 0 :(得分:1)

https://msdn.microsoft.com/en-us/library/yz1c7148(v=vs.110).aspx

  

指定零(0)立即重启计时器。

你去。