AsyncMethodBuilderAttribute.cs 905 B

12345678910111213141516171819202122
  1. // 这里必须要写入System.Runtime.CompilerServices这个命名空间
  2. namespace System.Runtime.CompilerServices
  3. {
  4. /// <summary>
  5. /// 这个属性的用法参考网上的async/await 状态机原理
  6. /// AsyncTaskMethodBuilder中对应的方法也是根据这部分原理来创建的。
  7. /// </summary>
  8. public sealed class AsyncMethodBuilderAttribute : Attribute
  9. {
  10. public Type BuilderType { get; }
  11. /// <summary>
  12. /// 当一个方法被await后,编译器会将等待的方法转换成状态机,具体步骤就是按照builderType的中的方法去创建,
  13. /// 因此AsyncTaskMethodBuilder中会提供一系列需要的方法,否者会报错。
  14. /// </summary>
  15. /// <param name="builderType"></param>
  16. public AsyncMethodBuilderAttribute(Type builderType)
  17. {
  18. BuilderType = builderType;
  19. }
  20. }
  21. }