私は待ちたいタスクのリストを持っています。私は待っています
await TaskEx.WhenAll(MyViewModel.GetListOfTasks().ToArray());
MyViewModel.GetListOfTasks()はタスクのリストを返します。
var tasksList = new List<Task>();
foreach (var item in Items)
{
tasksList.Add(item.MyTask());
}
今、私はすぐに行われるであろうダミーのタスクを返したいのですが。ただし、TaskEx.WhenAllはそれを永遠に待ちます。
public Task<bool> MyTask()
{
return new Task<bool>(() => false);
}
どうすればすぐに終了するタスクを返すことができますか?
.NET 4.5では、FromResultを使ってタスクの結果をすぐに返すことができます。
public Task<bool> 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<bool> MyTask()
{
return Task.FromResult(false);
}
.NET 4.5より前のバージョンでは、次のものを使用できます。TaskCompletionSource<TResult>
をシミュレートするFromResult
方法。
public static Task<TResult> FromResult<TResult>(TResult result)
{
var completionSource = new TaskCompletionSource<TResult>();
completionSource.SetResult(result);
return completionSource.Task;
}
FromResult
方法。 - Sam HarwellFromResult
利用可能な方法ではありません。 - Scott Chamberlain