1. 關於 Task.Run 簡單的示例01
直接貼代碼了:
public static class TaskDemo01 { public static void Run() { Console.WriteLine("【Debug】主 線程ID:" + Thread.CurrentThread.ManagedThreadId); string str1 = string.Empty, str2 = string.Empty, str3 = string.Empty; var task1 = Task.Run(() => { Thread.Sleep(2000); str1 = "姓名:張三,"; Console.WriteLine("【Debug】task1 線程ID:" + Thread.CurrentThread.ManagedThreadId); }).ContinueWith(t => { Thread.Sleep(2000); str2 = "年齡:25,"; Console.WriteLine("【Debug】task2 線程ID:" + Thread.CurrentThread.ManagedThreadId); }).ContinueWith(t => { Thread.Sleep(2000); str3 = "愛好:妹子"; Console.WriteLine("【Debug】task3 線程ID:" + Thread.CurrentThread.ManagedThreadId); }); //Thread.Sleep(2500);//其他邏輯代碼 task1.Wait(); Console.WriteLine(str1 + str2 + str3); Console.WriteLine("【Debug】主 線程ID:" + Thread.CurrentThread.ManagedThreadId); } }
運行截圖:

2. 關於 Task.Run 簡單的示例02
直接貼代碼了:
public static class TaskDemo02 { /// <summary> /// 整個方法只需用 5 秒即可執行完畢! /// </summary> public static void Run() { Console.WriteLine(string.Format("當前時間:{0},主線程方法開始...!", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); var task = Task.Run(() => { Thread.Sleep(5000);//假設這是個訪問數據庫的方法 Console.WriteLine(string.Format("當前時間:{0},Task方法體內部執行完畢!", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); }); Console.WriteLine(string.Format("當前時間:{0},主線程方法已經注入 Task.Run 方法,即將休眠 2 秒。", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); Thread.Sleep(2000);//假設這是個訪問FQ網站的方法 Console.WriteLine(string.Format("當前時間:{0},主線程方法休眠 2 秒完成。即將等待 Task.Run 方法執行結束", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); task.Wait(); Console.WriteLine(string.Format("當前時間:{0},主線程方法整個方法執行完畢!!", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); } }
運行截圖:

3. 關於 Task.Run 簡單的示例03
public static void Run() { var url = "http://www.cnblogs.com?id="; var list_task = new List<Task<string>>(); for (int i = 0; i < 10; i++) { var temp_url = url + i; var task = Task.Run(async () => { Console.WriteLine("temp_url=" + temp_url); var client = new System.Net.Http.HttpClient(); var html = await client.GetStringAsync(temp_url); Console.WriteLine("temp_url=" + temp_url + " is ok"); return html; }); list_task.Add(task); } Task.WaitAll(list_task.ToArray()); foreach (var item in list_task) { Console.WriteLine(item.Result); } }
4.
5.
直接貼代碼了:
運行截圖:
謝謝瀏覽!
