You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.9 KiB
63 lines
1.9 KiB
using System; |
|
using System.Diagnostics; |
|
using System.Runtime.CompilerServices; |
|
using System.Security; |
|
|
|
namespace ET |
|
{ |
|
public struct AsyncETTaskCompletedMethodBuilder |
|
{ |
|
// 1. Static Create method. |
|
[DebuggerHidden] |
|
public static AsyncETTaskCompletedMethodBuilder Create() |
|
{ |
|
AsyncETTaskCompletedMethodBuilder builder = new AsyncETTaskCompletedMethodBuilder(); |
|
return builder; |
|
} |
|
|
|
// 2. TaskLike Task property(void) |
|
public ETTaskCompleted Task => default; |
|
|
|
// 3. SetException |
|
[DebuggerHidden] |
|
public void SetException(Exception e) |
|
{ |
|
ETTask.ExceptionHandler.Invoke(e); |
|
} |
|
|
|
// 4. SetResult |
|
[DebuggerHidden] |
|
public void SetResult() |
|
{ |
|
// do nothing |
|
} |
|
|
|
// 5. AwaitOnCompleted |
|
[DebuggerHidden] |
|
public void AwaitOnCompleted<TAwaiter, TStateMachine>(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine |
|
{ |
|
awaiter.OnCompleted(stateMachine.MoveNext); |
|
} |
|
|
|
// 6. AwaitUnsafeOnCompleted |
|
[DebuggerHidden] |
|
[SecuritySafeCritical] |
|
public void AwaitUnsafeOnCompleted<TAwaiter, TStateMachine>(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : ICriticalNotifyCompletion where TStateMachine : IAsyncStateMachine |
|
{ |
|
awaiter.UnsafeOnCompleted(stateMachine.MoveNext); |
|
} |
|
|
|
// 7. Start |
|
[DebuggerHidden] |
|
public void Start<TStateMachine>(ref TStateMachine stateMachine) where TStateMachine : IAsyncStateMachine |
|
{ |
|
stateMachine.MoveNext(); |
|
} |
|
|
|
// 8. SetStateMachine |
|
[DebuggerHidden] |
|
public void SetStateMachine(IAsyncStateMachine stateMachine) |
|
{ |
|
} |
|
} |
|
} |