[英]How can I force all program threads to exit on program close?
关闭主窗口后,如何确保所有程序线程都中止?
您可以将“IsBackground”属性设置为true。 CLR在应用程序退出时关闭所有后台线程。
ManualResetEvent
来指示它们关闭 另见: http : //msdn.microsoft.com/en-us/library/7a2f3ay4(v = vs.80).aspx
尝试
Application.ExitThread();
Environment.Exit(0);
要么
Dispatcher.CurrentDispatcher.Thread.Abort();
将IsBackground
属性设置为true,并添加以下行:
AppDomain.CurrentDomain.ProcessExit += CloseMe; // for the main process
AppDomain.CurrentDomain.DomainUnload += CloseMe; // for ApplicationDomains
让CloseMe
方法设置一个在线程的主循环中检查的标志。
将它们收集到某处,例如
static public List<Thread> AllThreads;
并将该集合.Abort()
用于.Abort()
它们。
这是艰难而错误的方式。 更好的方法是让他们以某种方式停止,然后一个接一个地进行.Join()
。
通过让程序实际关闭,即。 不要故意引入任何强制运行主窗口的线程等待任何其他线程的代码。 然后,运行主窗口的线程可以自由地使用exitProcess(),然后操作系统将中止进程中的所有其他线程,无论它们在做什么。
Rgds,马丁
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.