我在做一个多线程的程序,用C#写的,可是为什么我关闭了所有窗口以后,应用程序还不退出,而要在任务管理器中结束进程呢???
System.Environment.Exit,貌似最简单,哪它有什么缺点吗?
追答System.Environment.Exit 好不好看情况而定。因为大多数情况下程序免不了与读写文件、数据库或是某些资料打交道,而在处理的过程中需要打开文件、读写、关闭。而在这些过程中使用System.Environment.Exit强制进程退出,这样没有机会关闭资源了,而这会造成某些资源文件的损坏,比如数据库损坏、或是文件只写了一半数据进去。而如果是一些纯计算类的工作的话那就不用考虑这些情况了。
追问哦哦。谢谢啦!。还有第一种方法是使用线程的Abort方法退出吗?还是别的方法?这个具体是怎么退出啊?
追答Abort也是一个办法,但是他也属于强制结束线程的一种办法,线程可能在工作的过程中被ThreadAbortException异常打断。
一般可以可以使用一个布尔值(比如isStop)表示是否需要中止任务,然后线程在处理工作时去检测isStop ,如果设置为 true 后,结束线程。
当需要结束工作时首先设置isStop=true,然后等待n秒(可使用join())再调用线程的Abort方法,再等待n秒后调用System.Environment.Exit。大致流程是这样,你可以根据实际情况进行调整。
网上说用Application.Exit()这个是什么意思,我什么我使用它不行呢?