170 похожих чатов

Привет всем! Подскажите, пожалуйста. Я запускаю три таска, чтобы потом сделать с

ними WaitAll().
var task1 = Task.Run(async () => await DoSmth1(canellationTokenSource), cancellationToken);
var task2 = Task.Run(async () => await DoSmth2(canellationTokenSource), cancellationToken);
Привет всем!
Подскажите, пожалуйста.
Я запускаю три таска, чтобы потом сделать с ними WaitAll().


var task1 = Task.Run(async () => await DoSmth1(canellationTokenSource), cancellationToken);
var task3 = Task.Run(async () => await DoSmth3(canellationTokenSource), cancellationToken);
var tasks = new Task[] { task1, task2, task3 };

try
{
Task.WaitAll(tasks, 30000, cancellationToken);
}
catch (OperationCanceledException e)
{
Console.WriteLine(e);
throw;
}
finally
{
cancellationTokenSource.Dispose();
}

Проблема в том, что компилятор делает ворнинг, что "captured variable is disposed in outer scope" на cancellationTokenSource, в местах, где делаются Task.Run.

Насколько я знаю, cancellationTokenSource НАДО диспоузить, однако меня смущает вот этот ворнинг. Подскажите, пожалуйста, что я делаю не так или как лучше сделать? Спасибо.

7 ответов

8 просмотров

Все

компилятор не знает завершатся ли таски до того как ты попадешь в finally, думаю он не настолько умный чтобы понять WaitAll

Начнем с того, что WaitAll, будет блокировать вызывающий поток, то есть не рекомендуеться использовать его. async () => , будет продолжать выполнение на потоке из пула потоков

Ну первое забери отуда async😁

Зачем здесь так?

В середине Task.Run, должно быть try ... catch

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта