Ich habe eine Liste von Aufgaben, auf die ich warten möchte. Ich warte gerne
await TaskEx.WhenAll(MyViewModel.GetListOfTasks().ToArray());
MyViewModel.GetListOfTasks () gibt eine Aufgabenliste zurück:
var tasksList = new List<Task>();
foreach (var item in Items)
{
tasksList.Add(item.MyTask());
}
Jetzt möchte ich Dummy-Aufgabe zurückgeben, die sofort erledigt werden würde. TaskEx.WhenAll würde jedoch ewig warten:
public Task<bool> MyTask()
{
return new Task<bool>(() => false);
}
Wie kann ich eine Aufgabe zurückgeben, die sofort erledigt wäre?
in .NET 4.5 können Sie FromResult verwenden, um sofort ein Ergebnis für Ihre Aufgabe zurückzugeben.
public Task<bool> MyTask()
{
return TaskEx.FromResult(false);
}
http://msdn.Microsoft.com/en-us/library/hh228607%28v=vs.110%29.aspx
Für Windows Phone 8.1 und höher ist die API wurde zusammengeführt mit anderen Plattformen konsistent:
public Task<bool> MyTask()
{
return Task.FromResult(false);
}
Vor .NET 4.5 können Sie TaskCompletionSource<TResult>
um die FromResult
Methode zu simulieren.
public static Task<TResult> FromResult<TResult>(TResult result)
{
var completionSource = new TaskCompletionSource<TResult>();
completionSource.SetResult(result);
return completionSource.Task;
}