C#笔记:异步的复杂实现 1、定义委托,创建委托实例并传入需要处理的函数 delegate string DoSomethingDele(int input); DoSomethingDele _do = new DoSomethingDele(Dosomething); //此函数用做测试,模拟操作占用的时间。返回占用的时间数。 private static string Dosomething(int second) { Thread.Sleep(second * 1000); return "延时了" + second + "秒"; } 2、定义回调处理函数 AsyncCallback asyncCallBackHander = (ar) => { Action<string> action = ar.AsyncState as Action<string>;//获取传入的回调函数 string str = _do.EndInvoke(ar);//获取异步处理返回值 action(str);//将返回值传入回调函数执行。 };3、定义回调函数,传入回调处理函数执行,它才是真正执行的回调函数 private static void PrintCallBack(string str) { Console.WriteLine("异步调用完成:" + str); }4、调用beginInvoke,传入异步操作的参数,传入回调处理函数,传入回调函数(作为回调处理函数的参数) var iasyncResult = _do.BeginInvoke(3, asyncCallBackHander , (Action<string>)PrintCallBack); Console.WriteLine("异步调用完毕,不必管它,继续做一些其它的事");5、完毕。 在执行完BeginInvoke后,可以不用再去管它。接下来进行其它的任务,回调函数会在异步调用后自动启动。 来自 大脸猫 写于 2015-02-16 22:00 -- 更新于2020-10-19 13:06 -- 0 条评论