Async与 Await
static void Main(string[] args) { // 同步方式 Console.WriteLine("同步方式测试开始!"); SyncMethod(0); Console.WriteLine("同步方式结束!"); Console.ReadKey(); } // 同步操作 private static void SyncMethod(int input) { Console.WriteLine("进入同步操作!"); var result = SyancWork(input); Console.WriteLine("最终结果{0}", result); Console.WriteLine("退出同步操作!"); } // 模拟耗时操作(同步方法) private static int SyancWork(int val) { for (int i = 0; i < 5; ++i) { Console.WriteLine("耗时操作{0}", i); Thread.Sleep(100); val++; } return val; }
static void Main(string[] args) { // 异步方式 Console.WriteLine("\n异步方式测试开始!"); AsyncMethod(0); Console.WriteLine("异步方式结束!"); Console.ReadKey(); } // 异步操作 private static async void AsyncMethod(int input) { Console.WriteLine("进入异步操作!"); var result = await AsyncWork(input); Console.WriteLine("最终结果{0}", result); Console.WriteLine("退出异步操作!"); } // 模拟耗时操作(异步方法) private static async Task<int> AsyncWork(int val) { for (int i = 0; i < 5; ++i) { Console.WriteLine("耗时操作{0}", i); await Task.Delay(100); val++; } return val; }
// 异步操作 private static async void AsyncMethod(int input) { Console.WriteLine("进入异步操作!"); var result = await Task.Factory.StartNew((Func<object, int>)SyncWork2, input); Console.WriteLine("最终结果{0}", result); Console.WriteLine("退出异步操作!"); } // 模拟耗时操作(同步方法) private static int SyncWork2(object input) { int val = (int)input; for (int i = 0; i < 5; ++i) { Console.WriteLine("耗时操作{0}", i); Thread.Sleep(100); val++; } return val; }