關於 Task.Run 簡單的示例


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.

直接貼代碼了:

運行截圖:

謝謝瀏覽!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM