Как сообщение Ctrl-C доставляется процессу, запущенному на windows?

Я создал консольное приложение C# для обработки Ctrl-C путем подписки на событие Console.CancelKeyPress. Когда я выполнил (отладочную версию) приложение, в процессе уже было создано 14 потоков. Когда я нажал Ctrl-C, был создан новый, 15-й поток и вызван мой обработчик. Я использовал process explorer из sysinternals для просмотра состояния процесса.

Мне интересно узнать, как сообщение Ctrl-C доставляется процессу и как создается дополнительный поток? Я полагаю, что даже если я не подпишусь на событие, оно все равно создаст дополнительный поток и завершит процесс. Как настроен механизм по умолчанию для обработки Ctrl-C в приложении.

Я разработчик .net, но хочу понять, как работает операционная система windows под капотом. Этот вопрос задан только из любопытства, чтобы изучить операционную систему windows.

7
задан Cœur 3 February 2018 в 07:18
поделиться