将消息传递给C#中的另一个线程

时间:2009-08-26 14:36:16

标签: c# multithreading communication

我有一个在后台运行的线程。我如何从主线程发送消息?我需要发送的唯一消息是'go'/'wakeup'

4 个答案:

答案 0 :(得分:3)

如果你的线程在你想要它开始之前什么都不做,那么为什么要开始它直到你希望它开始呢?

如果您希望运行后台线程,然后暂停/等待某个事件,然后继续,一个简单的方法是使用EventWaitHandle类系列。

一个简单的例子(摘自this question)。两个线程都应该有权访问以下内容:

private ManualResetEvent _workerWait = new ManualResetEvent(false);

然后,在你的工作线程中:

_workerWait.WaitOne();

现在,它会阻塞,直到主线程调用:

_workerWait.Set()

有关您的选项和示例的更完整讨论,请参阅:http://www.albahari.com/threading/

答案 1 :(得分:2)

答案 2 :(得分:1)

如果你正在谈论唤醒睡眠线程 - Thread.Suspend()(等待) - Thread.Resume()(去/唤醒)

答案 3 :(得分:0)