class Program
{
private static readonly Stopwatch Watch = new Stopwatch();
static void Main(string[] args)
{
Watch.Start();
Compute();
GetRandom();
Watch.Stop();
Console.ReadKey();
}
private static async void Compute()
{
var a = await GetSum();//任务开始后,直接继续执行下一步
Console.WriteLine(Watch.ElapsedMilliseconds + "异步方法完成结果:" + a);//直到调用a时候,如果任务未完成就会等待任务完成。
}
private static Task<long> GetSum()
{
var random = new Random();
var length = random.Next(10000, 100000);
long result = 0;
var task = new Task<long>(() =>
{
for (int i = 0; i < length; i++)
{
result += i;
};
return result;
});
task.Start();
return task;
}
private static void GetRandom()
{
var random = new Random();
var length = random.Next(10000, 100000);
Console.WriteLine(Watch.ElapsedMilliseconds + "普通方法完成结果:" + length);
}
}
如图,先开始执行异步方法,结果却是用时较少的普通方法先完成。