立即返回任务
我有一份任务列表,我想等待。 我在等
await TaskEx.WhenAll(MyViewModel.GetListOfTasks().ToArray());
MyViewModel.GetListOfTasks()返回任务列表:
var tasksList = new List(); foreach (var item in Items) { tasksList.Add(item.MyTask()); }
现在,我想返回虚假任务,这将立即完成。 但是,TaskEx.WhenAll会永远等待它:
public Task MyTask() { return new Task(() => false); }
我怎样才能返回任务,这将立即完成?
在.NET 4.5中,您可以使用FromResult立即返回任务的结果。
public Task MyTask() { return TaskEx.FromResult(false); }
http://msdn.microsoft.com/en-us/library/hh228607%28v=vs.110%29.aspx
对于Windows Phone 8.1及更高版本, API已合并为与其他平台一致:
public Task MyTask() { return Task.FromResult(false); }
在.NET 4.5之前,您可以使用TaskCompletionSource
来模拟FromResult
方法。
public static Task FromResult (TResult result) { var completionSource = new TaskCompletionSource (); completionSource.SetResult(result); return completionSource.Task; }