1
0
Fork 0
LaboratoryProtection/Assets/UnityTest/ZXL/Scripts/ETTaskHelper.cs

61 lines
1.5 KiB
C#

using System;
using Cysharp.Threading.Tasks;
using DragonSoul.Shared;
namespace UnityTest.ZXL
{
public static class ETTaskHelper
{
public static async ETTask WaitFinish(Action action, ETCancellationToken token = null)
{
ETTask task = ETTask.Create();
await task;
}
/// <summary>
/// 等待完成(自动床奶奶)
/// </summary>
/// <param name="token"></param>
/// <returns></returns>
public static async ETTask<bool> WaitCompletion(ETCancellationToken token = null)
{
ETTask<bool> task = ETTask<bool>.Create();
token?.Add(Cancel);
void Cancel()
{
task.SetResult(false);
token = new ETCancellationToken();
}
var isTrue = await task;
token.Remove(Cancel);
return isTrue;
}
public static async ETTask<bool> WaitCompletion(ETTask<bool> task, ETCancellationToken token = null)
{
task = ETTask<bool>.Create();
token?.Add(Cancel);
void Cancel()
{
task.SetResult(false);
token = new ETCancellationToken();
}
var isTrue = await task;
token?.Remove(Cancel);
return isTrue;
}
public static async ETTask WaitTime(float time, ETCancellationToken token = null)
{
await UniTask.Delay(TimeSpan.FromSeconds(time));
}
}
}