AsyncIteratorMethodBuilder
Represents a builder for asynchronous iterators.
using System.Runtime.InteropServices;
using System.Threading;
namespace System.Runtime.CompilerServices
{
[StructLayout(LayoutKind.Auto)]
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
public struct AsyncIteratorMethodBuilder
{
private AsyncTaskMethodBuilder _methodBuilder;
private object _id;
internal object ObjectIdForDebugger => _id ?? Interlocked.CompareExchange(ref _id, new object(), null) ?? _id;
public static AsyncIteratorMethodBuilder Create()
{
AsyncIteratorMethodBuilder result = default(AsyncIteratorMethodBuilder);
result._methodBuilder = AsyncTaskMethodBuilder.Create();
return result;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void MoveNext<[System.Runtime.CompilerServices.Nullable(0)] TStateMachine>(ref TStateMachine stateMachine) where TStateMachine : IAsyncStateMachine
{
_methodBuilder.Start(ref stateMachine);
}
public void AwaitOnCompleted<[System.Runtime.CompilerServices.Nullable(0)] TAwaiter, [System.Runtime.CompilerServices.Nullable(0)] TStateMachine>(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine
{
_methodBuilder.AwaitOnCompleted(ref awaiter, ref stateMachine);
}
public void AwaitUnsafeOnCompleted<[System.Runtime.CompilerServices.Nullable(0)] TAwaiter, [System.Runtime.CompilerServices.Nullable(0)] TStateMachine>(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : ICriticalNotifyCompletion where TStateMachine : IAsyncStateMachine
{
_methodBuilder.AwaitUnsafeOnCompleted(ref awaiter, ref stateMachine);
}
public void Complete()
{
_methodBuilder.SetResult();
}
}
}