Я устраняю неполадки в некотором коде .NET6, который просматривается список из нескольких тысяч элементов, и код по сути такой:
Код: Выделить всё
public async Task MyMethod()
{
foreach (var thing in things)
{
_ = Task.Run(async () => DoSomeStuffThatTakesAWhile(thing))
}
}
В данный момент я не могу вносить изменения в код и думаю, что смогу ответить на этот вопрос сам, немного записав в журнал. Но, к сожалению, на данный момент это невозможно.
Я ожидал увидеть журнал DoSomeStuffThatTakesAWhile() для каждого элемента в списке.
Моя теория заключается в том, что любые задачи, которые не были запланированы в потоке к моменту завершения MyMethod(), просто отбрасываются и никогда не выполняются. Вот как это работает? Я думаю, что добавление этих задач в список и выполнение WaitAll() в конце MyMethod может решить эту проблему.
Любая помощь или мысли помогут быть оцененным по достоинству.
Подробнее здесь: https://stackoverflow.com/questions/792 ... d-finishes
Мобильная версия