mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
63 lines
1.9 KiB
C#
63 lines
1.9 KiB
C#
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)
|
|
{
|
|
}
|
|
}
|
|
} |