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线程被阻止 步骤1-4的执行顺序保证是按照显示的顺序(技术上,订单不能保证是这样,但是如果订单如图所示,我的问题只有相关). 我的问题是在步骤2中的BeginInvoke调用之前是否有可能在步骤3中调用Invoke / BeginInvoke调用? 另外,请不要评论阻??止UI线程. 解决方法
在您的情况下,步骤2将始终在步骤3之前执行.UI线程上的BeginInvoke将按其已排队的顺序执行.
UI线程实际上是一个消息泵,它具有单个消息队列,只有一个线程消耗它,所以保证工作项将按照它们排队的顺序执行. 它与Delegate.BeginInvoke有关,执行顺序可能不是顺序的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |