日期:2014-05-19  浏览次数:20927 次

如何能方便结束我的程序啊?郁闷了。
我的程序写的比较大,也比较烂,呵呵。
我在开始的时候启动了两个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();
一般来说就可以了。。