forked from zxl/LaboratoryProtection
61 lines
1.5 KiB
C#
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));
|
|
}
|
|
}
|
|
} |