1
0
mirror of https://github.com/chylex/Minecraft-Phantom-Panel.git synced 2025-07-22 22:04:36 +02:00
Minecraft-Phantom-Panel/Utils/Phantom.Utils/Tasks/AsyncTasks.cs

36 lines
1015 B
C#

namespace Phantom.Utils.Tasks;
public static class AsyncTasks {
public static TaskCompletionSource CreateCompletionSource() {
return new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);
}
public static TaskCompletionSource<T> CreateCompletionSource<T>() {
return new TaskCompletionSource<T>(TaskCreationOptions.RunContinuationsAsynchronously);
}
public static void SetResultFrom(this TaskCompletionSource completionSource, Task task) {
if (task.IsFaulted) {
completionSource.SetException(task.Exception.InnerExceptions);
}
else if (task.IsCanceled) {
completionSource.SetCanceled();
}
else {
completionSource.SetResult();
}
}
public static void SetResultFrom<T>(this TaskCompletionSource<T> completionSource, Task<T> task) {
if (task.IsFaulted) {
completionSource.SetException(task.Exception.InnerExceptions);
}
else if (task.IsCanceled) {
completionSource.SetCanceled();
}
else {
completionSource.SetResult(task.Result);
}
}
}