gpt4 book ai didi

winforms - 在不存在控制对象的情况下在 UI 线程上运行代码

转载 作者:行者123 更新时间:2023-12-04 01:36:01 37 4
gpt4 key购买 nike

我目前正在尝试编写一个组件,它的某些部分应该在 UI 线程上运行(解释会很长)。
因此,最简单的方法是将控件传递给它,并在其上使用 InvokeRequired/Invoke。
但我不认为将控件引用传递给“数据/背景”组件是一个好的设计,所以我正在寻找一种在 UI 线程上运行代码而不需要控件可用的方法.
类似于 WPF 中的 Application.Dispatcher.Invoke ......

任何想法,
谢谢
马丁

最佳答案

有一种更好、更抽象的方法可以在 WinForms 和 WPF 上执行此操作:

System.Threading.SynchronizationContext.Current.Post(theMethod, state);

这是有效的,因为 WindowsForms 安装了 WindowsFormsSynchronizationContext 对象作为当前同步上下文。 WPF 做了类似的事情,安装它自己的专用同步上下文 ( DispatcherSynchronizationContext )。
.Post对应于 control.BeginInvoke , 和 .Send对应于 control.Invoke .

关于winforms - 在不存在控制对象的情况下在 UI 线程上运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/457237/

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