1、C#異步模式分類
基于任務的異步模式(TAP)
基于事件的異步模式(EAP)和異步編程模型模式(APM)
2、基于任務的異步模式(TAP)
基于任務的異步模式(TAP)用單個方法表示異步操作的開始和完成。
3、基本示例
static void Main(string[] args){var task = DoWork();Console.ReadKey();}public static Task DoWork(){for (int i = 0; i < 10; i++){Console.WriteLine(i);Task.Delay(1000);}return Task.CompletedTask;}}
4、任務終止示例
static void Main(string[] args){CancellationTokenSource cts = new CancellationTokenSource();CancellationToken token = cts.Token;var task = DoWork(token);Thread.Sleep(100);cts.Cancel();Console.WriteLine("cancel..");Console.ReadKey();}public static Task DoWork(CancellationToken cancellationToken){while (!cancellationToken.IsCancellationRequested){Console.WriteLine("wait..");Thread.Sleep(1000);return Task.CompletedTask;}return Task.FromCanceled(cancellationToken);}}
5、進度顯示示例
static void Main(string[] args){var progress = new Progress<double>(p =>{Console.WriteLine($"進度:{p}%");});var task = DoWork(progress);Console.ReadKey();}public static async Task DoWork(IProgress<double> progress){for(int i = 0; i <= 1000; i++){await Task.Delay(10);if(i%100 == 0){double d = i/10.0;progress?.Report(d);}}}}