Task.WhenAny ContinueWith:引数を取得しますか?

シミーワイツハンドラー

タスクのリストを実行し、いずれかのタスクが完了したら同期アクションを実行したいのですが、どのタスクであったかを知る必要があります。

私の例を参照し、コード内のコメントに注意してください。これは、達成方法がわからない数行の前にあります。

public async Task<bool> GreetAsync(string name)
{
  if (name == null)
    return false;

  await InternalGreeter.GreetAsync(name);
  return true;
}

public async Task GreetAllAsync()
{
  var tasks = UserNames.Select(un => GreetAsync(un)).ToList();

  while(tasks.Any())
  {
    var finished = await Task.WhenAny(tasks);

    if(finished.Result)
    {
      //Here's what I'd like to achieve
      var username = finished.Arguments[0];
      WriteLine($"User {username} has been greeted.");
    }

    tasks.Remove(finished);
  } 
}

この例に基づいてます。

私の実際のシナリオでは、顧客のリストがあり、それらを1つずつウォークスルーして、クレジットステータスでリモートサーバーを更新する必要があります(リモートサーバーはバッチ更新をサポートしていません)。それぞれが更新された後、この顧客が認定されていることをデータベースにマークする必要があります。

DavidG

単純に使ってみませんContinueWithか?このようなもの:

public async Task GreetAllAsync(List<string> UserNames)
{
  var tasks = UserNames
    .Select(un => GreetAsync(un)
        .ContinueWith(x => {
            Console.WriteLine(un + " has been greeted");
        }));

    await Task.WhenAll(tasks);
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Task.WhenAny for a Task and CancellationTokenの効果を得る方法は?

分類Dev

await Task.WhenAny()を使用して例外を無視する

分類Dev

辞書を使用したTask.WhenAnyの使用

分類Dev

How to get effect of Task.WhenAny for a Task and CancellationToken?

分類Dev

Task.WhenAny-タスクがキャンセルされました

分類Dev

Task.WhenAnyは、いくつかのタスクを他のタスクよりも優先しますか?

分類Dev

Task.WhenAnyを使用していくつかの異なる非同期操作の結果を待ちます

分類Dev

How to yield return item when doing Task.WhenAny

分類Dev

1つの特定のタスクが終了したときにTask.WhenAnyが戻るようにします

分類Dev

Task.WhenAny-実行中の残りのタスクはどうなりますか?

分類Dev

Task.WhenAny-実行中の残りのタスクはどうなりますか?

分類Dev

Task.WhenAny(障害のないタスクの場合)

分類Dev

同じTaskCompletionSourceに対して何度も呼び出されたときにTask.WhenAnyが非常に遅いのはなぜですか?

分類Dev

ASP.NetアプリケーションでTask.WhenAny()を使用することによるパフォーマンスへの影響

分類Dev

TaskScheduler.Currentを引数としてTask.ContinueWithを呼び出す必要があるのはいつですか。

分類Dev

Task.Run を使用する場合、continuewith タスクの参照を取得します。

分類Dev

Task.WhenAny未完了のタスクのキャンセルとタイムアウト

分類Dev

C#Task.continuewithは、前のTask.Resultに依存します

分類Dev

WhenAnyを使用して、タスクごとに例外を処理する

分類Dev

Task.ContinueWith延滞なし

分類Dev

TypeError:__ init __()が予期しないキーワード引数 'task_id'を取得しました

分類Dev

ICommand Execute()Task.ContinueWith()

分類Dev

Task.ContinueWith() is not executing as expected

分類Dev

結果がすぐに使用されている場合、WhenAny vs WhenAll vs WaitAll vs none

分類Dev

ContinueWithをSystem.Threading.Tasks.Taskで使用すると、単体テストが失敗します

分類Dev

非同期C#Tasks.WhenAny

分類Dev

Task.ContinueWith()をイベント「TaskEnded」の形式として使用することは良い習慣と考えられていますか?

分類Dev

Task.ContinueWithを割り当てるための正しいフォームは何ですか

分類Dev

どのスケジューラでTask.ContinueWith()が実行されますか?

Related 関連記事

  1. 1

    Task.WhenAny for a Task and CancellationTokenの効果を得る方法は?

  2. 2

    await Task.WhenAny()を使用して例外を無視する

  3. 3

    辞書を使用したTask.WhenAnyの使用

  4. 4

    How to get effect of Task.WhenAny for a Task and CancellationToken?

  5. 5

    Task.WhenAny-タスクがキャンセルされました

  6. 6

    Task.WhenAnyは、いくつかのタスクを他のタスクよりも優先しますか?

  7. 7

    Task.WhenAnyを使用していくつかの異なる非同期操作の結果を待ちます

  8. 8

    How to yield return item when doing Task.WhenAny

  9. 9

    1つの特定のタスクが終了したときにTask.WhenAnyが戻るようにします

  10. 10

    Task.WhenAny-実行中の残りのタスクはどうなりますか?

  11. 11

    Task.WhenAny-実行中の残りのタスクはどうなりますか?

  12. 12

    Task.WhenAny(障害のないタスクの場合)

  13. 13

    同じTaskCompletionSourceに対して何度も呼び出されたときにTask.WhenAnyが非常に遅いのはなぜですか?

  14. 14

    ASP.NetアプリケーションでTask.WhenAny()を使用することによるパフォーマンスへの影響

  15. 15

    TaskScheduler.Currentを引数としてTask.ContinueWithを呼び出す必要があるのはいつですか。

  16. 16

    Task.Run を使用する場合、continuewith タスクの参照を取得します。

  17. 17

    Task.WhenAny未完了のタスクのキャンセルとタイムアウト

  18. 18

    C#Task.continuewithは、前のTask.Resultに依存します

  19. 19

    WhenAnyを使用して、タスクごとに例外を処理する

  20. 20

    Task.ContinueWith延滞なし

  21. 21

    TypeError:__ init __()が予期しないキーワード引数 'task_id'を取得しました

  22. 22

    ICommand Execute()Task.ContinueWith()

  23. 23

    Task.ContinueWith() is not executing as expected

  24. 24

    結果がすぐに使用されている場合、WhenAny vs WhenAll vs WaitAll vs none

  25. 25

    ContinueWithをSystem.Threading.Tasks.Taskで使用すると、単体テストが失敗します

  26. 26

    非同期C#Tasks.WhenAny

  27. 27

    Task.ContinueWith()をイベント「TaskEnded」の形式として使用することは良い習慣と考えられていますか?

  28. 28

    Task.ContinueWithを割り当てるための正しいフォームは何ですか

  29. 29

    どのスケジューラでTask.ContinueWith()が実行されますか?

ホットタグ

アーカイブ