AsyncStateMachineAttribute Class
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Allows you to determine whether a method is marked with the Async (Visual Basic) or async (C# Reference) modifier.
System::Attribute
System.Runtime.CompilerServices::StateMachineAttribute
System.Runtime.CompilerServices::AsyncStateMachineAttribute
Assembly: mscorlib (in mscorlib.dll)
The AsyncStateMachineAttribute type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | AsyncStateMachineAttribute | Initializes a new instance of the AsyncStateMachineAttribute class. |
| Name | Description | |
|---|---|---|
![]() | StateMachineType | Returns the type object for the underlying state machine type that was generated by the compiler to implement the state machine method. (Inherited from StateMachineAttribute.) |
| Name | Description | |
|---|---|---|
![]() | Equals | Infrastructure. Returns a value that indicates whether this instance is equal to a specified object. (Inherited from Attribute.) |
![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.) |
![]() | GetHashCode | Returns the hash code for this instance. (Inherited from Attribute.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | Match | When overridden in a derived class, returns a value that indicates whether this instance equals a specified object. (Inherited from Attribute.) |
![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
You should not apply the AsyncStateMachine attribute to methods in your code. For methods that have the async modifier, the compiler will apply the AsyncStateMachine attribute in the emitted IL.
When a method (methodname) has the Async modifier, then the compiler emits IL that includes a state machine structure that contains the code in the method. The emitted IL also contains a stub method (methodname) that calls into the state machine. The compiler adds the AsyncStateMachine attribute to the stub method, which allows tools to identify the corresponding state machine. Details of the emitted IL are subject to change in future releases of the compilers.
The following example shows how to determine whether a method is marked with Async (Visual Basic) or async (C# Reference) modifier. In IsAsyncMethod, the following steps occur:
A MethodInfo object for the method name is obtained by using Type::GetMethod.
A Type object for the attribute is obtained by using GetType Operator (Visual Basic) or typeof (C# Reference).
An attribute object for the method and attribute type is obtained by using MethodInfo.GetCustomAttribute. If GetCustomAttribute returns Nothing (Visual Basic) or nullptr (C#), then the method does not contain the attribute.


