我有一个在后台运行的线程。我如何从主线程发送消息?我需要发送的唯一消息是'go'/'wakeup'
答案 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)