C# Task.WhenAny使用測試Demo
阿新 • • 發佈:2021-07-01
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApp1 { internal class Program { private static void Main(string[] args) { var t1 = GetTaskTestSum(); //同步阻塞 Console.WriteLine(t1.Result); var t2 = ToDoWithTimeOutAsync(); //同步阻塞 Console.WriteLine(t2.Result); Console.ReadLine(); } /// <summary> /// 測試 /// </summary> /// <returns></returns> privatestatic async Task<int> GetTaskTestSum() { int sum = 0; for (int i = 0; i <= 10; i++) { sum += 1; Console.WriteLine("sum += " + i); await Task.Delay(50); } return sum; }private static async Task<string> ToDoAsync() { await Task.Delay(TimeSpan.FromSeconds(1)); return "To Do Success"; } private static async Task<string> ToTimeAsync() { await Task.Delay(2000); return "To Time Success"; } /// <summary> /// Task.WhenAny任意一個任務完成返回 /// </summary> /// <returns>返回String型別</returns> private static async Task<string> ToDoWithTimeOutAsync() { var toDoTaskAsync = ToDoAsync(); var timeOutTaskAsync = ToTimeAsync(); var msg = string.Empty; var completedTask = await Task.WhenAny(toDoTaskAsync, timeOutTaskAsync); return completedTask.Result; } } }