2012-12-12 74 views
1

可能重复:
Is there a way to wake a sleeping thread?如何唤醒C#.net中另一个线程的睡眠线程?

我有一个Windows窗体在C#.net应用程序。我正在使用namedpipes与C++应用程序进行通信。通信部分运行良好。 在表单加载事件中,我启动了两个后台线程,其中一个用于接收。接收线程处于无限循环中。当没有要读取的数据时,它休眠,当数据到达时,它读取它,然后将它推入消息队列(全局创建)。我想使用我在创建时加载的表单读取消息队列并更新UI时创建的另一个。我想要的是,一旦第二个线程被创建,它就应该进入无限的睡眠状态,当阅读线程读取4个或更多的消息时,它应该产生某种信号来唤醒睡眠线程。那么线程将处理消息队列直到其为空,然后返回到休眠状态,直到它从接收线程接收到另一条消息。

+0

做*不*睡觉,摆脱那。线程总是调用管道流的Read()方法。 –

+0

这就是我的想法,但我想处理收到的数据,我不想错过任何接下来的数据。所以我希望处理由另一个线程完成,只有当该线程接收到某个东西时才会唤醒。 –

回答