本篇主要说明一下使用await处理连续异步任务后,程序的条理会变得较为清晰。
async static Task<string> GetInfoAsync(string name)
{
Console.WriteLine("Task {0} started!", name);
await Task.Delay(2000);
if(name == "Async 2")
throw new Exception("Boom!");
return string.Format("Task {0} 运行在线程id为 {1}的线程. 是否是线程池线程: {2}",
name, Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread);
}
async static Task AsynchronyWithAwait()
{
try
{
string result = await GetInfoAsync("Async 1");
Console.WriteLine(result);
result = await GetInfoAsync("Async 2");
Console.WriteLine(result);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}