Ожидание задач с продолжением с C #C#

Место общения программистов C#
Ответить
Anonymous
 Ожидание задач с продолжением с C #

Сообщение Anonymous »

Я пытаюсь перебрать все результаты, получить из кэша дополнительное значение и добавить его в параллельный словарь. Я использую опцию «Продолжить», но это не гарантирует завершение выполнения задач.

Код: Выделить всё

  private async Task PopulateValuesFromCacheToDictionaryTasks(
List searchResults)
{
List taskList = new();
foreach (var result in searchResults)
{
var currentId = result.Id;
var parentTask = _appCache.GetAsync(currentId ).ContinueWith(
x =>
{

if (_appDictionary.TryAdd(currentId , x.Result))
{
_logger.LogInformation($"Successfully added entry for {currentId } in dictionary");
}
else
{
_logger.LogError($"Unable to add entry {currentId } in dictionary");
}
}, TaskContinuationOptions.OnlyOnRanToCompletion);
taskList .Add(parentTask);
}

return taskList ;

}

//In the calling code

var listOfCacheFetchTasks =
PopulateValuesFromCacheToDictionaryTasks(searchResults);
await Task.WhenAll(listOfCacheFetchTasks );

// further processing based on the dictionary added values

Это не гарантирует, что продолжение кода (т. е.) добавление в словарь завершено.
Пытался добавить родительскую и дочернюю задачу по отдельности и ожидал обе задачи. тоже не работает

Подробнее здесь: https://stackoverflow.com/questions/782 ... th-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»