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);
+ }
+ }
+}