Task.GetAwaiter()

作者:追风剑情 发布于:2024-1-19 17:23 分类:C#

[官方文档] System.Threading.Tasks 命名空间
[官方文档] Task.GetAwaiter()

  1. using System;
  2. using System.Threading.Tasks;
  3. using System.Runtime.CompilerServices;
  4. using System.Threading;
  5.  
  6. namespace ConsoleApp11
  7. {
  8. internal class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. //创建任务
  13. Task<int> task = new Task<int>(() => {
  14. Thread.Sleep(3000);
  15. Console.WriteLine("执行任务");
  16. return 5;
  17. });
  18. //启动任务
  19. task.Start();
  20. //获取等待器
  21. TaskAwaiter<int> awaiter = task.GetAwaiter();
  22. //当任务完成后将触发OnCompleted和UnsafeOnCompleted
  23. //注意:任务发生未经处理的异常,任务被终止,也算完成任务。
  24. awaiter.OnCompleted(() => { Console.WriteLine("TaskAwaiter OnCompleted"); });
  25. awaiter.UnsafeOnCompleted(() => { Console.WriteLine("TaskAwaiter UnsafeOnCompleted"); });
  26.  
  27. //GetResult()会等待任务完成
  28. int result = awaiter.GetResult();
  29. if (awaiter.IsCompleted)
  30. Console.WriteLine("结果: {0}", result);
  31. Console.ReadLine();
  32. }
  33. }
  34. }


运行测试
1111.png

标签: C#

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号