您的位置:首页 > 其它

异步的两种写法: async 与 BeginInvoke

2016-07-23 20:36 393 查看
现在要实现异步只要用关键字async/await就可以轻松实现,在此之前需要用到委托/回调等一堆东西。

对一下是对比写法:

class Program
{
delegate string SendMessage(string msg);
static void Main(string[] args)
{
SendMessage sm = new SendMessage(DoAction);
sm.BeginInvoke("asyn asyn asyn ... ...", new AsyncCallback(CallBack), null);

DoAsync("async keywod.. ...");

Console.WriteLine("do do do .... ...");

Console.ReadLine();
}

static void CallBack(IAsyncResult result)
{
SendMessage sm = (SendMessage)((System.Runtime.Remoting.Messaging.AsyncResult)result).AsyncDelegate;
Console.WriteLine(sm.EndInvoke(result));
}

static string DoAction(string msg)
{
Thread.Sleep(3000);
return msg;
}

static  Task<string> DoTask(string msg)
{
return Task.Run(() =>
{
Thread.Sleep(1000);
return msg;
});
}

static async void DoAsync(string msg)
{
Console.WriteLine(await DoTask(msg));
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: