C#-WinForm跨线程修改UI界面

背景

在我做WinForm开发的过程中,经常会遇到耗时操作或阻塞操作。他们会引发软件的卡顿甚至假死,严重影响软件的使用。因此,这类耗时或阻塞的操作一般都会使用异步的方式去执行,不影响主线程(UI线程)与用户间的交互。但多个线程竞争读写同一个资源往往会造成意想不到的意外结果,UI界面也是一种资源,所以跨线程修改UI界面往往被加以限制。而在Winform中,跨线程修改UI界面同样是不被允许的。在子线程中修改界面控件时Visual Studio会报出如下错误:

解决思路

.Net提供了很多跨线程修改UI的方法,每种方法也有与之对应的工具类。我最常用的方法是ThreadPool+ delegate的方式完成跨线程对UI对的修改。

实例代码

1、定义委托,把内容写在控件里面

   private delegate void SetLabelDelegate(string value);private delegate void SetLabelDelegate2(string value);private void SetText(string value){if (this.InvokeRequired){SetLabelDelegate d = new SetLabelDelegate(SetText);this.Invoke(d, new object[] { value });}else{txtbigcrmresult.Text = value.ToString() + txtbigcrmresult.Text;}}

2、定义方法,线程调用

  private void button3_Click(object sender, EventArgs e){ThreadPool.QueueUserWorkItem(new WaitCallback(dao), "test");}
  private void dao(object url){IDbConnection conn = new SqlConnection(txtbigcrmui.Text);SetText("\r\n" + "start");.........................SetText("\r\n" + "end");}

3、更新ui控件 

 SetText("\r\n" + "start");

总结

1、使用delegate实现跨线程更新UI;

2、使用ThreadPool实现多线程执行方法,避免卡顿;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1w存银行一年多少利息_如果你有1000万存入银行,一年能有多少利息?刺激!

如果你有1000万存入银行,一年能有多少利息?刺激!每个人都想一夜暴富,世界上用钱可以解决90%的问题,还有剩下10%可以用钱去缓解,有钱男子汉,没钱汉子难,何以解忧,惟有暴富…

长春工业大学计算机科学与技术录取分数,2021年长春工业大学各省各专业最低投档录取分数线统计(文科 理科)...

2018年长春工业大学各省各专业最低投档录取分数线统计(文科 理科)同学们2019年高考是你们人生旅途的第一个加油站,它意味着你们的希望,你们的前途,甚至是命运,挑战六月就是挑战命运和未来,希望你们在高考中脱颖而出&am…

.NET 5 开源工作流框架elsa技术研究

编者注: 工作流框架 elsa 是.NET基金会下面的开源项目,2.0版本即将在3月份发布,目前正在紧锣密鼓的开发之中,2020年2月份我也介绍过推荐一个很棒的开源工作流elsa-core ,今天给大家推荐MVP 周国庆写的这篇详细文章。今…

php 清空一个数组_PHP工程师学Python数据类型

一、背景继上篇文章比较了PHP与Python语法之后,这周又学习了Python数据类型,准备从通过这篇文章给自己进行一些总结,也给其他读者一些参考。二、内容概要字符串(str)列表(list)元组(tup)字典(dict)数据操作三、字符串(str)Python中字符串操作…

“开源、共享、创新” 2020 中国.NET开发者大会小结

大会的新闻稿在2020年12月31日正式发布:开源共享创新|2020年中国.NET开发者大会圆满收官! , 本文是这篇新闻的补充性文章,仅代表个人对大会的各方面分享内容的一个小结。在2019年上海中国.NET开发者大会的基础上,2020年12月19日 继…

maya的颤动怎么做_必看!新手学习MAYA的几个建议

“学习是没有捷径可言的,唯一的捷径就是不断的学习和练习,只有这样才能学到真功夫”Maya设计刚刚开始接触Maya的同学都会有这些疑问,我适不适合学习Maya,学习Maya可以赚到钱吗?怎样才可以学好Maya,今天给大…

nginx lua以html显示,nginx 支持lua及lua脚本格式化日志

1.安装LuaJIT-2.0.4链接:http://luajit.org/download.htmltar -xf LuaJIT-2.0.4.tar.gzcd LuaJIT-2.0.4make PREFIX/usr/local/luajitmake install PREFIX/usr/local/luajit2.修改环境变量vim /etc/profileexport LUAJIT_LIB/usr/local/luajit/libexport LUAJIT_INC…

我的2020年终总结:新的角色,新的开始

【年终总结】| 作者/Edison Zhou又到了一年一度的年终盘点时刻,熟悉我的朋友应该都知道,这个时候我都会写一篇推文盘点一下这一年来的得失。1也谈2020关键事件回顾(1)扯证了,结婚了要说2020年我个人的最大里程碑&#…

docker es持久化_使用docker数据卷对容器数据持久化

volume是用于对Docker容器生成和使用的数据持久化的首选机制。如果您的容器生成非持久状态数据,请考虑使用 tmpfs挂载以避免将数据永久存储在任何地方,并通过避免写入容器的可写层来提高容器的性能。默认容器的数据存储在这里我们在容器中创建一些模拟的…

求职信计算机工程师英语作文,开发工程师英文求职信范文

开发工程师英文求职信范文respected leaders:hello:first salute you sincere thanks, thank you for taking the time to consult the of my application letter!i am aptech a student, now already graduated from junior year. major in.net direction, and ismitted to be…

微信适配国产操作系统:原生支持 Linux

喜欢就关注我们吧!据 ZOL 报道,统信软件官方近日宣布上线适配统信 UOS 的微信桌面客户端,并称该微信版本为原生支持 Linux 的版本,同时支持龙芯、鲲鹏、麒麟等国产 CPU。据悉,统信 UOS 版的微信桌面客户端由腾讯公司研…

oracle拆分分区语法详解大全_Oracle hash的分区方法详解

hash的原理虽然简单,但是它在数据库中可以说是无处不在。其中hash partition是hash在数据库中一个简单的应用,虽然它没有range partition那么常用,但是我们在做数据库水平拆分时,其实就是利用了hash partition的原理,利…

计算机专业的吸引力,计算机专业文献翻译-面向对象编程具有多方面的吸引力.doc...

英文文摘Why has object-oriented programming had such a sweeping impact on the software development communityObject-oriented programming appeals at multiple levels. For managers, it promises faster and cheaper development and maintenance. For analysts and d…

ML.NET生成器带来了许多错误修复和增强功能以及新功能

ML.NET是一个开源的跨平台机器学习框架,适合 .NET 开发人员。它允许将机器学习集成到 .NET 应用中,而无需离开 .NET 生态系统,甚至拥有 ML 或数据科学背景。ML.NET工具(Visual Studio 中的 UI 模型生成器和跨平台 ML.NET CLI&…

yolo算法的优缺点分析_yolo算法介绍

yolo算法介绍(2020-06-06 16:49:28)把Yolo模型搞清楚后不得不再次为人类的智慧感慨,一个巧妙的模型。要想理解Yolo我们先要搞清楚Yolo到底要解决一个什么问题,解决这个问题必须做哪些事情。Yolo属于多目标检测,因此需要解决两个问题&#xff…

Flash 生命终止,HTML5能否完美替代?

Adobe 对 Flash Player 的支持计划在今天,也就是 2020 年 12 月 31 日终止。Windows 计算机上最新版本的 Flash Player 已经开始弹出生命周期终止提示窗口。提示中指出,为了保护用户系统,Adobe 将在 2021 年 1 月 12 日开始禁止 Flash 内容在…

14考研计算机考前,计算机专业考研考前终极预测试题.docx

PAGE \* MERGEFORMAT #PAGE \* MERGEFORMAT #真理惟一可靠的标准就是永远自相符合计算机专业考研考前终极预测试题一?p单项选择题:1~40小题,每小题2分,共80分。在每小题给出的四个 选项中,请选出一项最符合题目要求的。1若某线性…

typora公式zuo对齐_Markdown编辑神器-Typora

Markdown For Typora Overview Markdown is created by Daring Fireball, the original guideline is here. Its syntax, however, varies between different parsers or editors. Typora is using [GitHub Flavored Markdown][GFM]. 注:Markdown语法与知乎不能完全兼容,显示…

使用 ML.NET 识别乐高颜色块

每一个乐高迷都拥有很多的颜色块,需要进行排序和按类型分拣,按照《Organizing your LEGO Bricks》或许有所帮助,但这不是一个简单的任务,因为有很多颜色块有非常微妙的差异。如果换作一个典型的程序员可以做什么来解决这个问题呢&…

维修计算机机房管理员职责,机房管理员岗位职责

机房管理员在现代教育技术中心主任的领导下,负责学生机房的规划建设和日常管理工作。具体履行以下职责:一、树立一切以教学为中心的服务意识,加强与教师之间的联系,注重业务学习,不断提高业务技能。二、掌握计算机操作…