如何能方便结束我的程序啊?郁闷了。
我的程序写的比较大,也比较烂,呵呵。
我在开始的时候启动了两个httlistener和3个固定线程,
然后通过查询注册表的一个键值
if(i==0)启动3个线程
else
启动另外2个线程。
而这5个线程是写在某个类里的,其在运行过程中根据不同需要又各自启动了一些线程。
所有的线程都是
while(true) 的,也就是说都是死循环的。
现在我要退出程序时,老是不能完整的退出,(在任务管理器中还是可以看见,必须手动结束掉)。现在请问如何能在程序退出时正常完整的退出呢,是不是只要有一个线程不死就不能退出呢? 如果快速的将所有线程全干掉?
我尝试把while(true)改成 while(RunThread)
然后在初始化是将RunThread=true; 退出时变成 false,但是还是不行。
头大请教。
------解决方案--------------------if xp,
System.Environment.Exit(0);
------解决方案--------------------楼住,程序推出是销毁掉所有的线程
------解决方案--------------------用线程池来产生线程
------解决方案--------------------设一个bool信号量,所有的线程在循环时都检查这个信号量,如果信号量是true就结束
------解决方案--------------------启动线程的时候,把线程的IsBackground属性设为true(设为后台线程)。
退出的时候使用Application.Exit()退出,这样应该会自动关闭所有的后台线程!!!
------解决方案--------------------LS说的有道理,这样做:
//它是线程安全的.
ManualResetEvent _isAllClosed = new ManualResetEvent(false);
//每个线程中:
while (!_isAllClosed.WaitOne(0, false))
{
//......
}
//当程序需要结束时候,在主线程中:
_isAllClosed.Set();
------解决方案--------------------Environment.Exit(0);
------解决方案--------------------我也和你一样遇到这样的情况,明明已经用退出命令了。可还是不能退出
System.Diagnostics.Process.GetCurrentProcess().Kill();
Application.Exit();
一般来说就可以了。。