IAwaitable.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233
  1. using System.Runtime.CompilerServices;
  2. namespace IFramework
  3. {
  4. /// <summary>
  5. /// 表示一个可等待对象,如果一个方法返回此类型的实例,则此方法可以使用 `await` 异步等待。
  6. /// </summary>
  7. /// <typeparam name="TAwaiter">用于给 await 确定返回时机的 IAwaiter 的实例。</typeparam>
  8. public interface IAwaitable<out TAwaiter> where TAwaiter : IAwaiter
  9. {
  10. /// <summary>
  11. /// 获取一个可用于 await 关键字异步等待的异步等待对象。
  12. /// 此方法会被编译器自动调用。
  13. /// </summary>
  14. TAwaiter GetAwaiter();
  15. }
  16. /// <summary>
  17. /// 表示一个包含返回值的可等待对象,如果一个方法返回此类型的实例,则此方法可以使用 `await` 异步等待返回值。
  18. /// </summary>
  19. /// <typeparam name="TAwaiter">用于给 await 确定返回时机的 IAwaiter{<typeparamref name="TResult"/>} 的实例。</typeparam>
  20. /// <typeparam name="TResult">异步返回的返回值类型。</typeparam>
  21. public interface IAwaitable<out TAwaiter, out TResult> where TAwaiter : IAwaiter<TResult>
  22. {
  23. /// <summary>
  24. /// 获取一个可用于 await 关键字异步等待的异步等待对象。
  25. /// 此方法会被编译器自动调用。
  26. /// </summary>
  27. TAwaiter GetAwaiter();
  28. }
  29. }