每当我在表单上切换一些内容时,我会通过执行(调用被切换的内容)来重新启动我的线程:
Retriever.Dispose();
Retriever = new System.Threading.Timer(CallPictureBoxRetriever, null, 0, 300000);
问题是这还在创建另一个线程并关闭前一个线程!
我问我如何在创建的同一个线程上调用CallPictureBoxRetriever(Object state)
,因此我不必总是处理/重新创建一个线程;而是有一个线程。
答案 0 :(得分:2)
只需重置计时器:
Retriever.Change(0, 300000); // reset to 300 seconds
第一个参数是 dueTime :
指定零(0)立即重启计时器。
其次是期间:
指定的回调方法的调用之间的时间间隔 构造Timer时,以毫秒为单位。指定 Timeout.Infinite禁用周期性信令。
完整文档here
答案 1 :(得分:1)
就个人而言,我会创建一个等待autoresetevent的线程,超时为30秒。然后让你的代码在你希望它立即运行时设置autoresetevent。
https://msdn.microsoft.com/en-us/library/system.threading.autoresetevent%28v=vs.110%29.aspx