diff --git a/Engine.Core/Extensions/CoroutineYieldExtensions.cs b/Engine.Core/Extensions/CoroutineYieldExtensions.cs new file mode 100644 index 0000000..9e09926 --- /dev/null +++ b/Engine.Core/Extensions/CoroutineYieldExtensions.cs @@ -0,0 +1,18 @@ +using System.Threading; +using System.Threading.Tasks; + +namespace Engine.Core; + +public static class CoroutineYieldExtensions +{ + public static async Task ToTask(this ICoroutineYield coroutineYield, CancellationToken cancellationToken = default) + { + while (coroutineYield.Yield()) + { + if (cancellationToken.IsCancellationRequested) + return; + + Thread.Sleep(1); + } + } +}