多次讨论从工作线程调用UI线程,我们知道为什么要使用BeginInvoke()而不是Invoke().我最近发布了这个问题,在做了一些研究之后,我发现在UI线程上调用(异步)某些东西至少有三种不同的方式(内部可能是相同的).
Control.BeginInvoke()SynchronizatoinContext类Dispatcher.BeginInvoke(priority.. )任何人都可以告诉我哪种方式可以异步调用在UI线程上执行的方法.有经验吗?我看到Dispatcher.BeginInvoke有优先级组件,是否使它更可靠?
上下文:
我们正在使用someControl.BeginInvoke()但注意到有时(不幸的是只在最终用户生产环境中)委托传递给BeginInvoke is从未执行过,这让我相信它创建的帖子消息会丢失.我们想要一种可靠的方式来回传到UI线程.control.Invoke()有时挂起UI,所以我们也不想去那里.
它们都按其应有的方式运行,如果您调用BeginInvoke但有时没有任何反应,则可能是环境或调用代码存在问题 - 这并不是不BeginInvoke可靠。好吧 - 可能存在错误,但可能性要小得多。
也许您可以提供更多背景信息,我们可以帮助诊断。
| 归档时间: |
|
| 查看次数: |
2103 次 |
| 最近记录: |