async & await 的前世今生(Updated)
1. 方法打上Async關鍵字, 就可以使用await調用别的Async方法了
2. 記得在需要異步執行的方法裡面調用await或者newstask, 才能開啟新的線程
![]() | |
static void Main(string[] args)
{
// 異步方式
Console.WriteLine("\n異步方式測試開始!main線程id是{0}",System.Threading.Thread.CurrentThread.ManagedThreadId);
AsyncMethod(0);
//AsyncMethod_taks(10);
Console.WriteLine("異步方式測試結束!");
Console.ReadKey();
}
// 異步操作
private static async void AsyncMethod(int input)
{
Console.WriteLine("進入異步操作!線程id是{0}", System.Threading.Thread.CurrentThread.ManagedThreadId);
var result = await AsyncWork(input);
Console.WriteLine("最終結果{0}, 線程ID是{1}", result, System.Threading.Thread.CurrentThread.ManagedThreadId);
Console.WriteLine("退出異步操作!");
}
// 模拟耗時操作(異步方法)
private static async Task<int> AsyncWork(int val)
{
await Task.Delay(2000);
for (int i = 0; i < 5; ++i)
{
Console.WriteLine("耗時操作{0}, 線程id是 {1}", i, System.Threading.Thread.CurrentThread.ManagedThreadId);
val++;
}
return val;
}
更推薦這種寫法
|
本人在長沙, 有工作可以加我QQ4658276