У меня есть список 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;
Edit: Как вы можете видеть на фото ниже, задачи бьют неисправное состояние:
{ "A вторая операция началась в этом контексте до того, как завершилась предыдущая операция асинхронная операция . Используйте «ожидание», чтобы гарантировать, что любые асинхронные операции завершены до вызова другого метода в этом контексте. Любой экземпляр членов не гарантируется поточно. "}
Что вы ожидаете от '.IsCompleted'? Укажите, что вы ожидаете от своего кода и что вы наблюдаете за ним. –
@ LasseV.Karlsen .IsCompleted должен содержать результат true или false после выполнения всех задач. Я уточнил вопрос более подробно. – user1477388
@ user1477388 Нет, он возвращает, завершена ли задание или нет, и немедленно ее возвращает. – Servy