Ответ 1
в .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
У меня есть список задач, которые я бы хотел подождать. Я жду, как
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);
}
Как я могу вернуть Task, которая будет завершена мгновенно?
в .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
До .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;
}