25

私は待ちたいタスクのリストを持っています。私は待っています

    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);
    }

どうすればすぐに終了するタスクを返すことができますか?


  • 別のサービス層を使ってこれを模擬する必要がありますか? - David L
  • @DavidLうん、それは私がやろうとしていることですが、現時点では私はただ新しいアーキテクチャで遊んでいるので、私は最初にダミーでそれを埋めるのが好きです、そしてその後、実装作業を始めます。 - Vitalii Vasylenko
  • Task.FromResult(false)を返します。 - Fabio Marcolini
  • と言っていますwp7の場合、TaskEx.FromResult(false)が返されます。しかし、あなたは窮屈です。 - Vitalii Vasylenko
  • タスクを作成していますが、実行したことはありません。 - user2674389

2 답변


61

.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);
}


  • フレームワークの最後のリリース以来、その:return Task.FromResult(false); - uli78
  • @ uli78この質問はウィンドウズフォン7のためのものでしたが、素晴らしい点です!回答を更新しました。ありがとうございます。 - David L

8

.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;
}


リンクされた質問


関連する質問

最近の質問