c# – 多个Control.BeginInvoke / Invoke调用按顺序执行?

前端之家收集整理的这篇文章主要介绍了c# – 多个Control.BeginInvoke / Invoke调用按顺序执行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要知道Control.BeginInvoke和Control.Invoke调用是否按照它们被调用的顺序执行.

我有以下情况:

> UI线程被阻止
> WCF线程调用Control.BeginInvoke
> WCF线程调用Control.Invoke(或者可能是BeginInvoke再次)
> UI线程被解除封锁
> ??

步骤1-4的执行顺序保证是按照显示的顺序(技术上,订单不能保证是这样,但是如果订单如图所示,我的问题只有相关).

我的问题是在步骤2中的BeginInvoke调用之前是否有可能在步骤3中调用Invoke / BeginInvoke调用

另外,请不要评论阻​​止UI线程.

解决方法

在您的情况下,步骤2将始终在步骤3之前执行.UI线程上的BeginInvoke将按其已排队的顺序执行.

UI线程实际上是一个消息泵,它具有单个消息队列,只有一个线程消耗它,所以保证工作项将按照它们排队的顺序执行.

它与Delegate.BeginInvoke有关,执行顺序可能不是顺序的.

猜你在找的C#相关文章