c#中winform异步不卡界面的实现方法

本篇内容主要讲解“c#中winform异步不卡界面的实现方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“c#中winform异步不卡界面的实现方法”吧!

澧县ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

场景

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

代码实现

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

public delegate void UpdateText(string message);public void UpdateTextMehod(string message){ richTextBox1.Text += message+"\r\n"; richTextBox1.ScrollToCaret();}

按钮的点击事件

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

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

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

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

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

Func func = new Func(() =>      {        Thread.Sleep(2000);        return DateTime.Now.Year;      });      AsyncCallback callback=new AsyncCallback((x) =>      {        var result=func.EndInvoke(x);        UpdateText ut = new UpdateText(UpdateTextMehod);        this.BeginInvoke(ut, result.ToString());      });      func.BeginInvoke(callback, "object vlaue");

注意

最后一句代码,可以写成这样。

var res =func.BeginInvoke(null,null);var result1 = func.EndInvoke(res).ToString();richTextBox1.Text += result1.ToString();
所以异步方法的执行结果要放在回调函数中,这样就不会卡死主界面。

到此,相信大家对“c#中winform异步不卡界面的实现方法”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


新闻名称:c#中winform异步不卡界面的实现方法
当前路径:http://scyanting.com/article/igsphp.html