C# - 如何从调用所需模式获取同步 UI 更新

本文关键字:获取 模式 同步 UI 更新 调用 | 更新日期: 2023-09-27 17:56:36

我有许多线程可以将文本附加到富文本框。使用 Invoke(),我很容易在主 UI 线程和工作线程之间陷入僵局。使用BeginInvoke(),我得到了异步UI更新,这是我不想要的。我希望文本立即出现在文本框中,而不是在我无法确定的某个后期阶段。

我该如何完成我的任务?

谢谢!

C# - 如何从调用所需模式获取同步 UI 更新

如果不接触 UI 线程,就无法神奇地在 UI 线程上运行。
如果要调用Invoke,则需要使UI线程停止等待后台线程。

但是,您应该只打电话给BeginInvoke
BeginInvoke并不比Invoke更即时;唯一的区别是Invoke强制调用线程等待,直到 UI 线程有机会运行委托。

如果后台线程需要等待 UI 线程运行委托(例如,如果它返回值),则可以调用 Invoke
在正常情况下,您应该始终调用BeginInvoke;让后台线程等到 UI 线程空闲通常没有意义。