mirror of
https://github.com/chylex/Minecraft-Phantom-Panel.git
synced 2025-07-22 22:04:36 +02:00
36 lines
1015 B
C#
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);
|
|
}
|
|
}
|
|
}
|