当前位置:  开发笔记 > 开发工具 > 正文

在没有控制对象存在的UI线程上运行代码

如何解决《在没有控制对象存在的UI线程上运行代码》经验,为你挑选了1个好方法。

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

任何想法,马丁



1> Judah Gabrie..:

有一种更好,更抽象的方法可以在WinForms和WPF上运行:

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

这是有效的,因为WindowsForms将WindowsFormsSynchronizationContext对象安装为当前同步上下文.WPF执行类似的操作,安装它自己的专用同步上下文(DispatcherSynchronizationContext).

.Post对应于control.BeginInvoke,.Send对应于control.Invoke.


在UI线程上访问SyncrhonizationContext.Current.保存以供以后使用,当你在另一个线程上时.
推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有