C# 线程中的线程:如何获取 SynchronizationContext.Current?
我有一个 WindowsForms 应用程序,其中 SynchronizationContext.Current 不为 null
但是从那个 WindowsForms 应用程序中,我创建了一个名为 thread1 的新线程
从 thread1 我创建了另一个名为 thread2 的线程
当我尝试使用 SynchronizationContext.Current 从 thread1 中的 thread2 发布方法时,将失败,因为 SynchronizationContext.Current 为 null
请给我一个从线程 2 到线程 1 的 POST 方法的解决方案,但异步
I have a WindowsForms application wich has SynchronizationContext.Current not null
But from that WindowsForms app I create a new Thread called thread1
From thread1 I create another Thread called thread2
When I try to POST methods from thread2 in thread1 using SynchronizationContext.Current, will fail because SynchronizationContext.Current is null
Please give me a solution to POST a method from thread2 to thread1, but asynchronously
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于 thread1 位于将处理发布消息的同步上下文中,因此您需要使用 thread1 的同步上下文进行发布。 (将同步上下文视为消息接收者。)因此,您需要以某种方式将 thread1 的同步上下文传递给 thread2。一种方法是使用 ParameterizedThreadStart 委托将其作为参数传递给 thread2:
并在 thread1 中:
Because thread1 is in the synchronisation context that will handle the posted message, you need to post using thread1's synchronization context. (Think of the synchronization context as the message receiver.) So you need to pass thread1's synchronization context to thread2 somehow. One way is to pass it as a parameter to thread2 using a ParameterisedThreadStart delegate:
and in thread1: