c# winform如何异步不卡界面
快速阅读
如何在winform程序中,让界面不再卡死。关于委托和AsyncCallback的使用。
界面卡死的原因是因为耗时任务的计算占用了主线程,导致主界面没有办法进行其它操作,比如拖动。造成界面卡死的现象。我们只需要把耗时任务放在子线程中执行就可以了。
子线程的计算结果 要更新到界面中,怎么更新呢,因为不能操作主线程 ,所以要用委托来实现 。
我们来看个例子。
场景
界面上一个按钮加一人richbox , 点击以后获得当前所在年份
代码实现
定义一个委托实现子线程更新主线程
按钮的点击事件
func委托:表示模拟一个耗时的操作(2s),然后返回一个结果 。
Asynccallback:表示在相应异步操作完成时调用的方法。在这个方法中,获取异步执行的结果。
要获取异步执行的结果,要调用func.EncInvoke(IAsyncResult)
实例化更新主线程 的委托UpdateText,然后异步调用,在func委托的计算结果 赋值给界面
func异步调用 ,把该异步的的回调方法当做参数传入。
注意
最后一句代码,可以写成这样,但是会卡死,
所以异步方法的执行结果要放在回调函数中,这样就不会卡死主界面。
切记。
友情提示
我对我的文章负责,发现好多网上的文章 没有实践,都发出来的,让人走很多弯路,如果你在我的文章中遇到无法实现,或者无法走通的问题。可以直接在公众号《爱码农爱生活 》留言。必定会再次复查原因。让每一篇 文章的流程都能顺利实现。
c# winform如何异步不卡界面相关推荐
- WinForm使用多线程异步加载界面数据
WinForm使用多线程异步加载界面数据 处于学习阶段,做个记录,如有写错,请多多指教. private void FrmQC111_Load(object sender, EventArgs e) ...
- Android异步处理二:AsynTask介绍和使用AsyncTask异步更新UI界面
做一下如何同构AsyncTask异步任务来更新UI界面. (1)AsyncTask的介绍 通过上图中的AsyncTask的源码结构图可以看到,主要用于重载的方法是doInBackground(),on ...
- Winform开发框架之Office Ribbon界面
Winform开发框架之Office Ribbon界面 在前面几篇文章介绍我的Winform框架随笔文章,包括有<Winform开发框架之字典数据管理>.<Winform开发框架之权 ...
- C# Winform 程序 使用DotNetBar美化界面
C# Winform 程序 使用DotNetBar美化界面 预备工作: 下载安装DotNetBar VS2010中添加DotNetBarBar <1>先下载DevComponents.Do ...
- C#-WinForm跨线程修改UI界面
背景 在我做WinForm开发的过程中,经常会遇到耗时操作或阻塞操作.他们会引发软件的卡顿甚至假死,严重影响软件的使用.因此,这类耗时或阻塞的操作一般都会使用异步的方式去执行,不影响主线程(UI线程) ...
- WinForm中异步加载数据并使用进度条
在WinForm程序中,有时会因为加载大量数据导致UI界面假死,这种情况对于用户来说是非常不友好的.因此,在加载大量数据的情况下,首先应该将数据加载放在另一线程中进行,这样保证了UI界面的响应:其次可 ...
- c#winform控件过多卡顿问题解决方案
近期在项目中遇到了登录以及切换界面时,界面不停闪烁的问题,经过查阅发现以下方法可以成功解决该问题. 将下面代码添加到窗体代码中即可: protected override CreateParams C ...
- 浅析.Net 在 winform及wpf中涉及界面交互的多线程类的封装
我们在开发客户端程序时,经常要用到多线程 而我们知道 , .Net 中从线程安全的考虑,对控件改变的调用要通过Invoke, beginvoke 来进行,这就涉及怎么进行工作线程与界面的互操作. 本文 ...
- c# winform编程之多线程ui界面资源修改总结篇
单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么 ...
最新文章
- boot spring 没有父子容器_Spring父子容器问题
- 23 年码农经历,33 次创业失败,38 岁身价百亿,快手创始人宿华的逆袭史!
- 激光雷达选型指南 这2项重要指标却被很多人忽略
- mos 多路模拟电子开关_【原创】单火线智能开关技术介绍及分析
- 图的基本操作及其相关应用
- 计算机组成原理 -- 概念点整理
- python拷贝是什么知识点_python闭包、深浅拷贝、垃圾回收、with语句知识点汇总...
- 【VMCloud云平台】Demo应用搭建(二)
- PC如何控制device进入suspend模式
- 一位程序员的爱情故事
- 股价暴跌 特斯拉市值周四蒸发上千亿美元
- 条件变量、pthread_cond_init
- 接口规范 6. 查看在线用户
- ios h5 出现的问题
- linux的raid级别,RAID各种级别及特性
- Python人脸识别之——创建csv文件 create_csv.py 代码 Python3.7
- java计算机毕业设计网上购物商城演示录像源码+系统+数据库+lw文档+mybatis+运行部署
- xp提示计算机内存不足,虚拟内存不足怎么处理,教你电脑虚拟内存不足怎么处理...
- 世界最大最高摩天轮,迪拜之眼迎来首批游客
- 免费开放可转盲文字库 阿里健康大药房呼吁关注视障群体用药安全
热门文章
- 信息学奥赛一本通 2031:【例4.17】四位完全平方数
- 信息学奥赛一本通(2056:【例3.7】最大的数)
- 信息学奥赛一本通(1175:除以13)
- 理论基础 —— 索引 —— 倒排索引
- C++语言基础 —— STL —— 容器与迭代器 —— vector
- 最大公约数和最小公倍数问题(洛谷-P1029)
- 信息学奥赛一本通C++语言——1080:余数相同问题
- 49 FI配置-财务会计-固定资产-与总账集成-分配总帐科目
- 一起学习C语言:C语言基本语法(一)
- python基础之os.system函数执行命令行语句