【发布时间】:2018-04-30 21:26:49
【问题描述】:
我想在某个用户事件上启动一个后台线程,如果变量在传入和检查之间发生变化,我会等待/睡眠 10 秒以执行某些操作。但是,在那 10 秒内,相同的用户事件可以重复,我想中断并重置线程以使用新变量并在 10 秒后重新开始。 例如,
private static int index = 0;
private static Thread myThread = null;
if(myThread != null && myThread.IsAlive) {
// need to 'restart' the thread with updated index
/* Suspend? Resume? */
} else {
// create a new thread and start countdown
myThread = new Thread(new ThreadStart( some_Thread(index) ));
myThread.Start();
}
我读到suspend() 和resume() 已经过时了,而且我已经阅读了一些关于Auto/ManualResetEvent 的帖子,但它们并不是我想要的。它可能更接近 Abort() 然后 Start() 一个新的,但显然这是不明智的。
那么有什么建议可以用一个静态线程句柄来实现吗?同样,10 秒的“睡眠”必须是可中断的,此后,线程可以被丢弃或重新启动。谢谢!
【问题讨论】:
标签: c# multithreading