.NET ez 2013-01-25
Task 與 Thread 的基本使用方法。
執行結果:
範例程式碼:
//傳統寫法 List<Thread> Pool = new List<Thread>(); for (int i = 0; i < 5; i++) { Pool.Add(new Thread((object str) => { Thread.Sleep(i * 500); Console.WriteLine("Thread " + ((string)str).ToString()); })); } for (int i = 0; i < 5; i++) Pool[i].Start(i.ToString()); Console.WriteLine("Thread Start!"); for (int i = 0; i < 5; i++) Pool[i].Join(); Console.WriteLine("Thread Done!"); Console.ReadLine(); List<Task> PoolTask = new List<Task>(); for (int i = 0; i < 5; i++) { int x = i; PoolTask.Add(Task.Factory.StartNew(() => { Thread.Sleep(1000); Console.WriteLine("Task " + x.ToString()); })); } Console.WriteLine("Task Start!"); Task.WaitAll(PoolTask.ToArray()); Console.WriteLine("Thread Done!"); Console.ReadLine(); List<Task<string>> PoolTaskReturn = new List<Task<string>>(); for (int i = 0; i < 5; i++) { int x = i; PoolTaskReturn.Add(Task.Factory.StartNew<string>(() => { Thread.Sleep(1000); return "Task Return " + x.ToString(); })); } Console.WriteLine("Task Start!"); for (int i = 0; i < 5; i++) Console.WriteLine(PoolTaskReturn[i].Result); Console.WriteLine("Thread Done!"); Console.ReadLine(); Task.Factory.StartNew(() => { Thread.Sleep(1000); Console.WriteLine("Task A"); }).ContinueWith(task => { Thread.Sleep(1000); Console.WriteLine("Task B"); }).ContinueWith(task => { Thread.Sleep(1000); Console.WriteLine("Task C"); }).ContinueWith(task => { Thread.Sleep(1000); Console.WriteLine("Task D"); }); Console.ReadLine();
標籤: .NET
本文章網址:
https://www.ez2o.com/Blog/Post/csharp-Task-Thread-Sample-Code
https://www.ez2o.com/Blog/Post/317
https://www.ez2o.com/Blog/Post/csharp-Task-Thread-Sample-Code
https://www.ez2o.com/Blog/Post/317