Ключевые моменты:
1. Когда поток создаётся в основном потоке, IsBackground потока по умолчанию устанавливается в FALSE.
2. Когда основной поток выходит, поток с IsBackground=FALSE продолжает выполняться до окончания выполнения потока.
3. Только потоки с IsBackground=TRUE выходят вместе с выходом из основной потока.
4. При инициализации потока и установке Thread.IsBackground=true это указывает, что поток является фоновым потоком. Фоновая нить, когда выходит основная нить.
5. Принцип: Пока все потоки на переднем плане завершены, CLR вызовет Abort() для каждого активного фонового потока для полного завершения приложения.
Прилагается ещё один вариант: Как выйти из программы: вот это. Close(); Если вы просто закроете текущее окно, если это не основная форма, вы не можете выйти из программы, а если есть управляемый поток (не основной поток), вы не сможете выйти чисто; Application.Exit(); Заставьте все сообщения прервать и выходить из всех форм, но если есть управляемый поток (не основной), он не может выйти чисто; Application.ExitThread(); принудительно прерывает все сообщения в вызывающем потоке, а также сталкивается с проблемой, что другие потоки не могут корректно выйти из них; System.Environment.Exit(0); Это самый полный способ выйти из него, независимо от того, какой поток вынужден закрыть, завершая программу очень чисто. |