1
3
最近,我在线程上进行异步调用和事件并将它们返回到主线程时遇到了一些问题。 我用过 SynchronizationContext 去跟踪事情。下面的(伪)代码显示了目前对我有用的东西。
|
2
2
也许您可以让DoSyncTask启动一个计时器对象,该对象以适当的间隔检查数据变量的值。一旦数据有了值,您就可以使用另一个事件火来告诉您数据现在有了值(当然还要关闭计时器)。 相当丑陋的黑客,但它可以工作。。。在理论上。
|
3
2
我解决了异步同步问题,至少使用了所有.NET类。 它仍然不适用于COM。我怀疑是因为STA线程。托管COM OCX的.NET组件引发的事件从未由我的工作线程处理,因此在WaitOne()上出现死锁。 不过,其他人可能会欣赏这个解决方案:) |
4
0
所以,这可能是因为它依赖于一个消息泵或其他东西的发生。Application.Run有用于非GUI应用程序的重载。你可以考虑让一个线程启动和泵,看看是否可以解决这个问题。 我还建议使用Reflector查看组件的源代码,找出它在做什么。 |
5
0
|
6
0
在我重读斯科特W的答案后,我对它的评论似乎有点晦涩。所以让我更明确地说:
这是完成你想做的事情的最简单的方法。(我在自己的应用程序中有非常相似的代码,所以我知道它可以工作) |
7
0
你的代码几乎是正确的。。。我刚换了衣服
|