gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:09:28 25 4
gpt4 key购买 nike

我需要知道 Control.BeginInvoke 和 Control.Invoke 调用是否会按照它们被调用的顺序执行。

我有以下场景:

  1. UI 线程被阻塞
  2. WCF 线程调用 Control.BeginInvoke
  3. WCF 线程调用 Control.Invoke(或可能再次调用 BeginInvoke)
  4. UI 线程未阻塞
  5. ??

步骤 1-4 的执行顺序保证按照显示的顺序(从技术上讲,顺序不能保证是那样,但我的问题只有在顺序如图所示时才相关)。

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

此外,请不要评论阻​​塞 UI 线程。

最佳答案

在您的情况下,第 2 步将始终在第 3 步之前执行。UI 线程上的 BeginInvoke 将按照排队的顺序执行。

UI 线程实际上是一个消息泵,它有一个消息队列,只有一个线程使用它,因此可以保证工作项将按照它们排队的顺序执行。

Delegate.BeginInvoke 的执行顺序可能是非顺序的。

关于c# - 多个 Control.BeginInvoke/Invoke 调用会按顺序执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1880870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com