IAwaiter.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System;
  2. using System.Runtime.CompilerServices;
  3. namespace IFramework
  4. {
  5. /// <summary>
  6. /// 用于给 await 确定异步返回的时机。
  7. /// </summary>
  8. public interface IAwaiter : INotifyCompletion
  9. {
  10. /// <summary>
  11. /// 获取一个状态,该状态表示正在异步等待的操作已经完成(成功完成或发生了异常);此状态会被编译器自动调用。
  12. /// 在实现中,为了达到各种效果,可以灵活应用其值:可以始终为 true,或者始终为 false。
  13. /// </summary>
  14. bool IsCompleted { get; }
  15. /// <summary>
  16. /// 此方法会被编译器在 await 结束时自动调用以获取返回状态(包括异常)。
  17. /// </summary>
  18. void GetResult();
  19. }
  20. /// <summary>
  21. /// 用于给 await 确定异步返回的时机,并获取到返回值。
  22. /// </summary>
  23. /// <typeparam name="TResult">异步返回的返回值类型。</typeparam>
  24. public interface IAwaiter<out TResult> : INotifyCompletion
  25. {
  26. /// <summary>
  27. /// 获取一个状态,该状态表示正在异步等待的操作已经完成(成功完成或发生了异常);此状态会被编译器自动调用。
  28. /// 在实现中,为了达到各种效果,可以灵活应用其值:可以始终为 true,或者始终为 false。
  29. /// </summary>
  30. bool IsCompleted { get; }
  31. /// <summary>
  32. /// 获取此异步等待操作的返回值,此方法会被编译器在 await 结束时自动调用以获取返回值(包括异常)。
  33. /// </summary>
  34. /// <returns>异步操作的返回值。</returns>
  35. TResult GetResult();
  36. }
  37. }