在无限制等待模式下停止C#中的线程
本文关键字:线程 无限制 等待 模式 | 更新日期: 2023-09-27 17:59:41
全部,
我有一个主线程,它创建了10个执行相同方法的线程。在这个方法中,有一个到消息队列的连接,每个线程无限制地等待,直到消息到达。然而,如果我想的话,我需要有告诉线程死亡的功能。我该怎么做?
这里有一个例子:
void ExecuteThread(){
//run some stuff
//listen to a message queue
//Here wait unlimited until a message arrives
}
如何通知无限等待命令中的上述代码停止线程?我不能像优雅地从队列断开连接那样中止它。
非常感谢,MK-
}
什么类型的消息队列?你的主线程能在队列中发送一条自杀消息吗(10条自杀消息,或者一条有内部计数的自杀消息)?
Rgds,Martin
不要无限等待,而是使用有超时的WaitOne。把它放在一个循环中,它检查一个标志是否取消。然后,从您的主线程,您可以向线程发出退出的信号。
类似(伪代码):
while (keepRunning)
{
//wait 5 seconds for message
}
通常您必须创建一个等待循环,用于检查共享变量。这个变量表示如果线程必须取消它的操作。
警告:不要创建经常检查变量的无限循环,这会导致"繁忙等待"。您应该在队列中等待消息,直到超时到来。超时之后,您可以检查控制变量,然后再次进入队列的等待过程。