首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C#笔记:异步的复杂实现

C#笔记:异步的复杂实现

作者头像
超级大猪
发布于 2019-11-22 09:46:48
发布于 2019-11-22 09:46:48
7520
举报
文章被收录于专栏:大猪的笔记大猪的笔记

1、定义委托,创建委托实例并传入需要处理的函数  

代码语言:javascript
复制
delegate string DoSomethingDele(int input);
DoSomethingDele _do = new DoSomethingDele(Dosomething);
 
//此函数用做测试,模拟操作占用的时间。返回占用的时间数。
 private static string Dosomething(int second)  
        {
            Thread.Sleep(second * 1000);
            return "延时了" + second + "秒";
        }

2、定义回调处理函数 

代码语言:javascript
复制
AsyncCallback asyncCallBackHander = (ar) =>
                {
                    Action<string> action = ar.AsyncState as Action<string>;//获取传入的回调函数
                    string str = _do.EndInvoke(ar);//获取异步处理返回值
                    action(str);//将返回值传入回调函数执行。
                };

3、定义回调函数,传入回调处理函数执行,它才是真正执行的回调函数 

代码语言:javascript
复制
private static void PrintCallBack(string str)
        {
            Console.WriteLine("异步调用完成:" + str);
        }

4、调用beginInvoke,传入异步操作的参数,传入回调处理函数,传入回调函数(作为回调处理函数的参数)

代码语言:javascript
复制
 var iasyncResult = _do.BeginInvoke(3,
                asyncCallBackHander
                ,
                (Action<string>)PrintCallBack);
 Console.WriteLine("异步调用完毕,不必管它,继续做一些其它的事");

5、完毕。 

在执行完BeginInvoke后,可以不用再去管它。接下来进行其它的任务,回调函数会在异步调用后自动启动。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-02-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档