webentwicklung-frage-antwort-db.com.de

Task <bool> sofort zurückgeben

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?

31

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);
}
70
David L

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;
}
9
Sam Harwell