C# Winform 跨线程更新UI控件常用方法汇总
转:雁过无痕,叶落无声
C# Winform 跨线程更新UI控件常用方法汇总
概述
C#Winform编程中,跨线程直接更新UI控件的做法是不正确的,会时常出现“线程间操作无效: 从不是创建控件的线程访问它”的异常。处理跨线程更新Winform UI控件常用的方法有4种:
1. 通过UI线程的SynchronizationContext的Post/Send方法更新;
2. 通过UI控件的Invoke/BeginInvoke方法更新;
3. 通过BackgroundWorker取代Thread执行异步操作;
4. 通过设置窗体属性,取消线程安全检查来避免"跨线程操作异常"(非线程安全,建议不使用)。
下文中对以上3种方法应用进行举例说明,希望能对初识C# Winform的同学们有些帮助。
成文表分享交流之意,惶恐水平有限,文中理解和表述有错误之处还请大家多被批评指正。
更新记录:
2018年2月3日,根据网友评论提示更新错别字,BegainInvoke=》BeginInvoke。
正文
1. 博客园-事理同学的文章。
3.How to: Make Thread-Safe Calls to Windows Forms Controls
事理,C#线程中安全访问控件(重用委托,避免繁复的delegate,Invoke)总结