快速阅读

如何在winform程序中,让界面不再卡死。关于委托和AsyncCallback的使用。

界面卡死的原因是因为耗时任务的计算占用了主线程,导致主界面没有办法进行其它操作,比如拖动。造成界面卡死的现象。我们只需要把耗时任务放在子线程中执行就可以了。

子线程的计算结果 要更新到界面中,怎么更新呢,因为不能操作主线程 ,所以要用委托来实现 。

我们来看个例子。

场景

界面上一个按钮加一人richbox , 点击以后获得当前所在年份

代码实现

定义一个委托实现子线程更新主线程

按钮的点击事件

func委托:表示模拟一个耗时的操作(2s),然后返回一个结果 。

Asynccallback:表示在相应异步操作完成时调用的方法。在这个方法中,获取异步执行的结果。

要获取异步执行的结果,要调用func.EncInvoke(IAsyncResult)

实例化更新主线程 的委托UpdateText,然后异步调用,在func委托的计算结果 赋值给界面

func异步调用 ,把该异步的的回调方法当做参数传入。

注意

最后一句代码,可以写成这样,但是会卡死,

所以异步方法的执行结果要放在回调函数中,这样就不会卡死主界面。

切记。

友情提示

我对我的文章负责,发现好多网上的文章 没有实践,都发出来的,让人走很多弯路,如果你在我的文章中遇到无法实现,或者无法走通的问题。可以直接在公众号《爱码农爱生活 》留言。必定会再次复查原因。让每一篇 文章的流程都能顺利实现。

c# winform如何异步不卡界面相关推荐

  1. WinForm使用多线程异步加载界面数据

    WinForm使用多线程异步加载界面数据 处于学习阶段,做个记录,如有写错,请多多指教. private void FrmQC111_Load(object sender, EventArgs e) ...

  2. Android异步处理二:AsynTask介绍和使用AsyncTask异步更新UI界面

    做一下如何同构AsyncTask异步任务来更新UI界面. (1)AsyncTask的介绍 通过上图中的AsyncTask的源码结构图可以看到,主要用于重载的方法是doInBackground(),on ...

  3. Winform开发框架之Office Ribbon界面

    Winform开发框架之Office Ribbon界面 在前面几篇文章介绍我的Winform框架随笔文章,包括有<Winform开发框架之字典数据管理>.<Winform开发框架之权 ...

  4. C# Winform 程序 使用DotNetBar美化界面

    C# Winform 程序 使用DotNetBar美化界面 预备工作: 下载安装DotNetBar VS2010中添加DotNetBarBar <1>先下载DevComponents.Do ...

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

    背景 在我做WinForm开发的过程中,经常会遇到耗时操作或阻塞操作.他们会引发软件的卡顿甚至假死,严重影响软件的使用.因此,这类耗时或阻塞的操作一般都会使用异步的方式去执行,不影响主线程(UI线程) ...

  6. WinForm中异步加载数据并使用进度条

    在WinForm程序中,有时会因为加载大量数据导致UI界面假死,这种情况对于用户来说是非常不友好的.因此,在加载大量数据的情况下,首先应该将数据加载放在另一线程中进行,这样保证了UI界面的响应:其次可 ...

  7. c#winform控件过多卡顿问题解决方案

    近期在项目中遇到了登录以及切换界面时,界面不停闪烁的问题,经过查阅发现以下方法可以成功解决该问题. 将下面代码添加到窗体代码中即可: protected override CreateParams C ...

  8. 浅析.Net 在 winform及wpf中涉及界面交互的多线程类的封装

    我们在开发客户端程序时,经常要用到多线程 而我们知道 , .Net 中从线程安全的考虑,对控件改变的调用要通过Invoke, beginvoke 来进行,这就涉及怎么进行工作线程与界面的互操作. 本文 ...

  9. c# winform编程之多线程ui界面资源修改总结篇

    单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么 ...

最新文章

  1. boot spring 没有父子容器_Spring父子容器问题
  2. 23 年码农经历,33 次创业失败,38 岁身价百亿,快手创始人宿华的逆袭史!
  3. 激光雷达选型指南 这2项重要指标却被很多人忽略
  4. mos 多路模拟电子开关_【原创】单火线智能开关技术介绍及分析
  5. 图的基本操作及其相关应用
  6. 计算机组成原理 -- 概念点整理
  7. python拷贝是什么知识点_python闭包、深浅拷贝、垃圾回收、with语句知识点汇总...
  8. 【VMCloud云平台】Demo应用搭建(二)
  9. PC如何控制device进入suspend模式
  10. 一位程序员的爱情故事
  11. 股价暴跌 特斯拉市值周四蒸发上千亿美元
  12. 条件变量、pthread_cond_init
  13. 接口规范 6. 查看在线用户
  14. ios h5 出现的问题
  15. linux的raid级别,RAID各种级别及特性
  16. Python人脸识别之——创建csv文件 create_csv.py 代码 Python3.7
  17. java计算机毕业设计网上购物商城演示录像源码+系统+数据库+lw文档+mybatis+运行部署
  18. xp提示计算机内存不足,虚拟内存不足怎么处理,教你电脑虚拟内存不足怎么处理...
  19. 世界最大最高摩天轮,迪拜之眼迎来首批游客
  20. 免费开放可转盲文字库 阿里健康大药房呼吁关注视障群体用药安全

热门文章

  1. 信息学奥赛一本通 2031:【例4.17】四位完全平方数
  2. 信息学奥赛一本通(2056:【例3.7】最大的数)
  3. 信息学奥赛一本通(1175:除以13)
  4. 理论基础 —— 索引 —— 倒排索引
  5. C++语言基础 —— STL —— 容器与迭代器 —— vector
  6. 最大公约数和最小公倍数问题(洛谷-P1029)
  7. 信息学奥赛一本通C++语言——1080:余数相同问题
  8. 49 FI配置-财务会计-固定资产-与总账集成-分配总帐科目
  9. 一起学习C语言:C语言基本语法(一)
  10. python基础之os.system函数执行命令行语句