如果是windows程序,而且用了多线程的话
必须把底层的线程全关闭掉之后才会彻底退出
否则就算用application.exit,在任务管理器里面还是看得到的

解决方案 »

  1.   

    Thread.Abort()
    Thread.Join()thread 是你的各线程句柄,我推荐的做法为
    建一个 public static bool EndAll = false;然后你主线程退出时将它置 true然后在你的每子线程循环内加上if (主类.EndAll){
      break;
    }来自然结束,这是最安全的方法,因为thread.abort 在循环体内强制结束,会导致对象的未注销、资源的锁定等问题
      

  2.   

    ArLi2003(阿利 无业悠民)的方法也不尽然,如果某个线程正在等待做某些事情,也就是阻塞,就不能预见他什么时候结束,什么时候去检查 EndAll我的意思是将每一个线程的引用添加到主类的一个集合中,主类结束的时候循环线程集合中的所有对象,依次调用Abort()方法。
      

  3.   

    to cometsky(天空中自由翱翔的彗星)我上面不是说过了可以使用abort 并有示例,但我也声明了它的坏处,何为不尽然?消息重载未解除,钩子设置未解除,文件打开中、socket 等待中,这样的情况下立即abort 怎么行?