我在应用程序的主线程上执行了一些异步操作。我需要一个工作线程定期轮询主线程并检查主线程上的值。
我该怎么做?我可以在主线程正在侦听的工作线程上引发一个事件吗?双向沟通。
谢谢..
答案 0 :(得分:1)
另一种更“手动”的方式来完成你在这里要求的东西。让主线程检查感兴趣的值,然后将重置事件发送到工作线程:
在线程库中查看ManualResetEvent(和AutoResetEvent,具体取决于您的需要)。这些是用于在工作线程和主线程之间发送信号的非常简单的简单机制。
在主线程上创建一个Timer / callback,在合理的时间内检查该值。如果所需的值被评估为true,则设置将信号发送到工作线程的事件。
答案 1 :(得分:0)
如果您使用的是WPF,则可以让工作线程调用WPF窗口的Dispatcher.Invoke方法来获取主线程上的数据。如果您使用的是WinForms,则表单本身具有“Invoke”方法,您可以检查“InvokeRequired”方法以确定是否应该调用Invoke方法。