C#中异步及winform中界面假死

本文探讨了C#中使用BeginInvoke进行异步调用的区别,特别是控制器的BeginInvoke和委托的BeginInvoke。尽管控制器的BeginInvoke会回到主线程执行,但在WinForm应用中处理耗时操作时仍可能导致界面假死。为解决此问题,文章介绍了通过定义委托和使用回调函数来避免界面阻塞的方法,包括如何正确地调用EndInvoke以确保异步操作的顺利进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    c#中可以用BeginInvoke去启动异步调用,但是有两个BeginInvoke一个是controller的BeginInvoke还有一个是委托的BeginInvoke。

  主要区别是controller的BeginInvoke会返回到主线程中执行。如果在Winform中使用了controller得BeginInvoke去执行一些费时的操作任然会使界面假死。

  controller的BeginInvoke使用方法是先定义一个委托 如

  delegate void UpdateUI(string s);然后生成一个实例 

  UpdateUI mi = new UpdateUI(DoUpdate); DoUpdate就是要执行的具体函数返回值和参数要和定义的委托一致.

 this.BeginInvoke(mi,new object[]{s}) 这里的s就是要传递的参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值