加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:06:00 所属栏目:百科 来源:网络整理
导读:我需要知道Control.BeginInvoke和Control.Invoke调用是否按照它们被调用的顺序执行. 我有以下情况: UI线程被阻止 WCF线程调用Control.BeginInvoke WCF线程调用Control.Invoke(或者可能是BeginInvoke再次) UI线程被解除封锁 ?? 步骤1-4的执行顺序保证是按照
我需要知道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有关,执行顺序可能不是顺序的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读