//
//
-#if NET_4_0 || MOBILE
+#if NET_4_0
using System.Threading;
abstract class TaskActionInvoker
{
public static readonly TaskActionInvoker Empty = new EmptyTaskActionInvoker ();
+ public static readonly TaskActionInvoker Promise = new EmptyTaskActionInvoker ();
public static readonly TaskActionInvoker Delay = new DelayTaskInvoker ();
sealed class EmptyTaskActionInvoker : TaskActionInvoker
sealed class FuncTaskSelected<TResult> : TaskActionInvoker
{
readonly Func<Task, TResult> action;
- readonly Task[] tasks;
- public FuncTaskSelected (Func<Task, TResult> action, Task[] tasks)
+ public FuncTaskSelected (Func<Task, TResult> action)
{
this.action = action;
- this.tasks = tasks;
}
public override Delegate Action {
public override void Invoke (Task owner, object state, Task context)
{
- var result = ((Task<int>) owner).Result;
- ((Task<TResult>) context).Result = action (tasks[result]);
+ var result = ((Task<Task>) owner).Result;
+ ((Task<TResult>) context).Result = action (result);
}
}
return new ActionTaskSelected (action);
}
- public static TaskActionInvoker Create<TResult> (Func<Task, TResult> action, Task[] tasks)
+ public static TaskActionInvoker CreateSelected<TResult> (Func<Task, TResult> action)
{
- return new FuncTaskSelected<TResult> (action, tasks);
+ return new FuncTaskSelected<TResult> (action);
}
#endregion