先实现一个简单的异步方法:
asyncRsult方法模拟一些异步操作;
执行到Task.run的时候会返回一个调用者;
在主方法中创建一个等待接受任务结果的对象;
用对象的OnCompleted方法内委托执行获取结果;
当然,这不是最简单的方法
最简单的方法是用关键字async,await
稍后陈述
finished;
class Program
{
static void Main(string[] args)
{
var awaiter = asyncResult().GetAwaiter();
//下面是委托的回调
awaiter.OnCompleted(
() =>
{
Console.WriteLine((Int32)awaiter.GetResult());
}
);
Console.WriteLine("sync");
}
static Task<int> asyncResult()
{
//模拟Io-Bound or Compute-Bound操作
Thread.Sleep(2000);
return Task.Run(() => { return 250; }) ;
}
}
原文:https://www.cnblogs.com/liflower/p/13938173.html