【发布时间】:2009-08-26 14:36:15
【问题描述】:
我有一个线程在后台运行。我如何从我的主线程发送消息?我需要发送的唯一消息是“go”/“wakeup”
【问题讨论】:
标签: c# multithreading communication
我有一个线程在后台运行。我如何从我的主线程发送消息?我需要发送的唯一消息是“go”/“wakeup”
【问题讨论】:
标签: c# multithreading communication
如果您的线程在您希望它启动之前什么都不做,那么为什么要在您希望它启动之前启动它?
如果您希望运行后台线程,然后暂停/等待某个事件,然后继续,一个简单的方法是使用 EventWaitHandle 系列类。
一个简单的例子(取自this question)。两个线程都应该可以访问以下内容:
private ManualResetEvent _workerWait = new ManualResetEvent(false);
然后,在您的工作线程中:
_workerWait.WaitOne();
现在,它会一直阻塞,直到你的主线程调用:
_workerWait.Set()
有关您的选项和一些示例的更完整讨论,请参阅:http://www.albahari.com/threading/
【讨论】:
【讨论】:
如果您正在谈论唤醒睡眠线程 - Thread.Suspend()(wait) - Thread.Resume()(go/wake up)
【讨论】:
【讨论】: