Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从工作线程检查主线程的属性值?_C#_Multithreading - Fatal编程技术网

C# 如何从工作线程检查主线程的属性值?

C# 如何从工作线程检查主线程的属性值?,c#,multithreading,C#,Multithreading,我在应用程序的主线程上执行了一些异步操作。我需要一个工作线程定期轮询主线程并检查主线程上的值 我该怎么做?我可以在主线程正在侦听的工作线程上引发事件吗?双向通信 谢谢..如果您正在使用WPF,您可以让工作线程调用WPF窗口的Dispatcher.Invoke方法来获取主线程上的数据。如果您使用的是WinForms,那么表单本身就有一个“Invoke”方法,您可以检查“InvokeRequired”方法以确定是否应该调用Invoke方法。另一种更“手动”的方法来完成您在这里的要求。让主线程检查感兴

我在应用程序的主线程上执行了一些异步操作。我需要一个工作线程定期轮询主线程并检查主线程上的值

我该怎么做?我可以在主线程正在侦听的工作线程上引发事件吗?双向通信


谢谢..

如果您正在使用WPF,您可以让工作线程调用WPF窗口的Dispatcher.Invoke方法来获取主线程上的数据。如果您使用的是WinForms,那么表单本身就有一个“Invoke”方法,您可以检查“InvokeRequired”方法以确定是否应该调用Invoke方法。

另一种更“手动”的方法来完成您在这里的要求。让主线程检查感兴趣的值,然后向工作线程发送重置事件:

  • 查看线程库中的ManualResetEvent(和AutoResetEvent,取决于您的需要)。这些都是非常简单的工作线程和主线程之间的下线和下线机制

  • 在主线程上创建一个计时器/回调,在合理的时间段内检查值。如果所需的值被计算为true,则设置向工作线程发送信号的事件