Files
2026-07-13 13:13:17 +08:00

14 lines
500 B
C#

namespace Mediapipe.Extension;
internal static class TaskExtension
{
// polyfill for Task.WaitAsync
public static async Task<T> WaitAsync<T>(this Task<T> task, CancellationToken cancellationToken)
{
TaskCompletionSource<T> tcs = new();
using (cancellationToken.Register(state => ((TaskCompletionSource<T>)state!).TrySetCanceled(), tcs))
{
return await (await Task.WhenAny(task, tcs.Task).ConfigureAwait(false)).ConfigureAwait(false);
}
}
}