廊坊网站关键词排名,上海网站建设定制公司,义乌小程序开发哪家好,智慧旅游网站开发与设计与实现刚刚搞明白了C#的异步调用#xff0c;写下来#xff0c;方便后续调用。 异步主要是解决UI假死的问题#xff0c;而开辟出一个新的线程#xff0c;处理大数据。 1.既然是委托的调用#xff0c;那么先定义个委托#xff1a; public delegate bool CheckUpdateFile(); 2.定义…刚刚搞明白了C#的异步调用写下来方便后续调用。 异步主要是解决UI假死的问题而开辟出一个新的线程处理大数据。 1.既然是委托的调用那么先定义个委托 public delegate bool CheckUpdateFile(); 2.定义一个将要工作的委托函数和委托类型一致 private bool Press(){//处理大数据//如读取大文件网络通讯等return true;}3.声明及初始化委托实例运行该实例 BeginInvoke( AsyncCallback callback,object object) //原型 需要一个带有IAsyncResult 参数类型的函数如private void callback(IAsyncResult ar) CheckUpdateFile fun new CheckUpdateFile(Press);
fun.BeginInvoke(callback, fun); //回调函数
private void callback(IAsyncResult ar)//该参数功能强大万能型可以传object { if (!ar.IsCompleted) return;//没有完成不结束改线程。 var fun (CheckUpdateFile)ar.AsyncState;//强类型转换为委托对象 //var sar (AsyncResult)ar; //var fun (MyDelegate)sar.AsyncDelegate; var isok fun.EndInvoke(ar);//结束后返回委托Press的结果 if (isok) { Invoke((EventHandler)delegate { //匿名方法体委托完成后将要做什么。 }); } } 二、还可以使用匿名函数来写 var fun new CheckUpdateFile(Press);
fun.BeginInvoke(ar
{if (!ar.IsCompleted) return;//var fun (CheckUpdateFile)ar.AsyncState;声明在前部分不需要转换。var isok fun.EndInvoke(ar);//结束后返回委托Press的结果if (isok){Invoke((EventHandler)delegate{});}
}, fun);//fun可写为null匿名函数中不需要转换 转载于:https://www.cnblogs.com/ankeyliu/p/4552367.html