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