diff --git a/IteratorTasks.Extensions/IteratorTasks.Extensions.csproj b/IteratorTasks.Extensions/IteratorTasks.Extensions.csproj index 516035b..7c2e882 100644 --- a/IteratorTasks.Extensions/IteratorTasks.Extensions.csproj +++ b/IteratorTasks.Extensions/IteratorTasks.Extensions.csproj @@ -43,6 +43,7 @@ + diff --git a/IteratorTasks.Extensions/TaskUtility.cs b/IteratorTasks.Extensions/TaskUtility.cs index c9923b6..aa36e15 100644 --- a/IteratorTasks.Extensions/TaskUtility.cs +++ b/IteratorTasks.Extensions/TaskUtility.cs @@ -11,7 +11,7 @@ namespace IteratorTasks /// 特に、タイマー関連は、マルチスレッドになってしまうので Unity とは相性よくないかも。 /// Unity は yield return new WaitForSeconds(t); とか使ってほしそうだし。 /// - public static class TaskUtility + public static partial class TaskUtility { /// /// 二重起動防止付きのタスク生成関数を返す。 diff --git a/IteratorTasks.Extensions/TaskUtility_Success.cs b/IteratorTasks.Extensions/TaskUtility_Success.cs new file mode 100644 index 0000000..cdba738 --- /dev/null +++ b/IteratorTasks.Extensions/TaskUtility_Success.cs @@ -0,0 +1,72 @@ +using System; + +namespace IteratorTasks +{ + public static partial class TaskUtility + { + + public static Task OnSuccess(this Task t, Action succesHandler) + { + return t.ContinueWith(x => + { + succesHandler(); + }, true); + } + + public static Task OnSuccess(this Task t, Action succesHandler) + { + return t.ContinueWith(x => + { + succesHandler(t.Result); + }, true); + } + + public static Task OnSuccess(this Task t, Func succesHandler) + { + return t.ContinueWith(x => + { + return succesHandler(); + }, true); + } + + public static Task OnSuccess(this Task t, Func succesHandler) + { + return t.ContinueWith(x => + { + return succesHandler(t.Result); + }, true); + } + + public static Task OnSuccessWithTask(this Task t, Func succesHandler) + { + return t.ContinueWithTask(x => + { + return succesHandler(); + }, true); + } + + public static Task OnSuccessWithTask(this Task t, Func succesHandler) + { + return t.ContinueWithTask(x => + { + return succesHandler(t.Result); + }, true); + } + + public static Task OnSuccessWithTask(this Task t, Func> succesHandler) + { + return t.ContinueWithTask(x => + { + return succesHandler(); + }, true); + } + + public static Task OnSuccessWithTask(this Task t, Func> succesHandler) + { + return t.ContinueWithTask(x => + { + return succesHandler(t.Result); + }, true); + } + } +}