读书人

怎么能方便结束小弟我的程序啊郁闷了

发布时间: 2012-01-28 22:06:13 作者: rapoo

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

读书人网 >C#

热点推荐