前面我們看過了 Task 幾種使用方法
那如果今天我們想要的是
1. 三個好友同時搶廉航機票,只要任一人搶成功,就可以成行
=> Task.WaitAny
2. 三個好友同時從起點出發,全部都抵達終點才算獲勝
=> Task.WaitAll
3. 三個好友接力賽跑,A 跑完才能換 B,B 跑完才能換 C
=> ContinueWith
結果如下
程式碼如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApplication7
{
/// <summary>
/// 示範 WaitAny 跟 WaitAll
/// tip: 關鍵字: wait系列, await, result, getResult 要等, 其他都不用
/// </summary>
class Program
{
static void Main(string[] args)
{
var task1 = Task.Factory.StartNew(() =>
{
Thread.Sleep(300);
Console.WriteLine("task1 - OK");
});
var task2 = Task.Factory.StartNew(() =>
{
Thread.Sleep(600);
Console.WriteLine("task2 - OK");
}).ContinueWith(q =>
{
Console.WriteLine("task2 - Continue - OK");
});
//Task.WaitAny()
Task.WaitAny(task1, task2);
Console.WriteLine("任一 Task 完成");
//Task.WaitAll()
Task.WaitAll(task1, task2);
Console.WriteLine("所有 Task 都完成");
Console.Read();
}
}
}