私はList<System.Security.Claim>
のリストを持っており、各請求を非同期で追加したいと考えています。すべてのタスクを実行し、後ですべてのタスクが実行されたことを確認するためにboolean
を設定する方法が不思議です。また、私はこれを試してみましたタスクのリストを実行するには?
foreach (var claim in claims)
{
claimTasks.Add(UserManager.AddClaimAsync(user.Id, claim));
}
claimResultSucceeded = Task.WhenAll(claimTasks).IsCompleted;
:
foreach (var claim in claims)
{
claimTasks.Add(Task.Run(() => UserManager.AddClaimAsync(user.Id, claim)));
}
claimResultSucceeded = Task.WhenAll(claimTasks).IsCompleted;
編集:あなたは下の写真で見ることができるように、タスクがフォルト状態をヒットしている:
{ "前の の非同期操作が完了する前にこのコンテキストで2番目の操作が開始されました 操作が完了しました 'await'を使用して、非同期操作が確実に行われるようにします が完了してから、このコンテキストで別のメソッドを呼び出します。 メンバーは、スレッドセーフであるとは限りません。「任意のインスタンス}
'.IsCompleted'に何を期待しますか?あなたのコードが何を期待しているのか、あなたが何をしているのかを述べてください。 –
@ LasseV.Karlsen .IsCompletedは、すべてのタスクが実行された後に、真または偽の結果を含む必要があります。私は詳細をつけて質問を更新しました。 – user1477388
@ user1477388いいえ、タスクが現在完了しているかどうかを返し、直ちにそれを返します。 – Servy