在无限制等待模式下停止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-

}

在无限制等待模式下停止C#中的线程

什么类型的消息队列?你的主线程能在队列中发送一条自杀消息吗(10条自杀消息,或者一条有内部计数的自杀消息)?

Rgds,Martin

不要无限等待,而是使用有超时的WaitOne。把它放在一个循环中,它检查一个标志是否取消。然后,从您的主线程,您可以向线程发出退出的信号。

类似(伪代码):

while (keepRunning)
{
   //wait 5 seconds for message
}

通常您必须创建一个等待循环,用于检查共享变量。这个变量表示如果线程必须取消它的操作。

警告:不要创建经常检查变量的无限循环,这会导致"繁忙等待"。您应该在队列中等待消息,直到超时到来。超时之后,您可以检查控制变量,然后再次进入队列的等待过程。