С# - отмена источника токена не работает, и основная функция зависает в консольном приложенииC#

Место общения программистов C#
Ответить
Гость
 С# - отмена источника токена не работает, и основная функция зависает в консольном приложении

Сообщение Гость »


Я написал следующий код C# в .NET 6 в простом консольном приложении. Он захватывает сигнал «Прерывание» (т. е. Ctrl+C) и сигнализирует источнику токена отмены об отмене своего токена. Затем в основном методе я хочу, чтобы поток завершился. Почему следующий код не работает должным образом, т. е. метод Main не завершается, и я не вижу сообщения Exiting...

пространство имен ConsoleApp1 { Программа общественного класса { частный статический CancellationTokenSource cancelTokenSource = новый CancellationTokenSource(); public static void Main(string[] args) { Console.CancelKeyPress += новый ConsoleCancelEventHandler(InterruptHandler); Task.Delay(Timeout.Infinite, cancelTokenSource.Token).Wait(); Console.WriteLine("Выход..."); } частный статический void InterruptHandler (объект? отправитель, ConsoleCancelEventArgs e) { ОтменаTokenSource.Cancel(); } } } Затем я изменил основной метод на этот, но все равно произошло то же самое.
public static void Main(string[] args) { Console.CancelKeyPress += новый ConsoleCancelEventHandler(InterruptHandler); в то время как (cancellationTokenSource.IsCancellationRequested == false) Thread.Sleep(1000); Console.WriteLine("Выход..."); } } }
Ответить

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

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

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

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

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