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

我写了一个windows服务,为什么线程在不断的增加
我写了一个windows服务,为什么线程在不断的增加,平均每周增加5~8个线程,我的代码如下:

xmlThread   =   new   Thread(new   ThreadStart(func));
xmlThread.Start();
xmlThread.Join(10000);//占用10000时间后自动结束线程
xmlThread.Abort();
Debug.Assert(false,   DateTime.Now.ToString( "yyyy-MM-dd   HH:mm:ss ")   +   "线程任务结束!◎ ");

注明:func函数中有很多循环,而且有调用外部命令例如 "rar.exe "


------解决方案--------------------
调用的那些外部命令是不是没有正常结束,所以线程不能结束
------解决方案--------------------
影响应该不大吧~.....关注

------解决方案--------------------
try{
xmlThread = new Thread(new ThreadStart(func));
xmlThread.Start();
xmlThread.Join(10000);//占用10000时间后自动结束线程
}
finally
{
xmlThread.Abort();
Debug.Assert(false, DateTime.Now.ToString( "yyyy-MM-dd HH:mm:ss ") + "线程任务结束!◎ ");
}

改成这样试试
------解决方案--------------------
xmlThread.Abort();改成Thread.Abort;
------解决方案--------------------
应该是有死循环了,要看具体代码。
------解决方案--------------------
关注
------解决方案--------------------
关注
------解决方案--------------------
晕哈,你在线程里打开了其它程序,也许程序还没运行完,没能正常关闭外部程序,你来了ABORT,强行关闭线程,它的外部线程没人关,所以就一直占用CPU啦
------解决方案--------------------
最大的可能出在你的线程函数代码中,代码在里面执行没有结束,检查下线程函数的代码。
------解决方案--------------------
应该是线程释放没有控制好
void func()
{
try
{
//执行完成后
xmlThread.Abort();

}
catch
{}
}
改成这样试试.注意如果fun里有循环,一定要加try catch,否则about可能退不出来.
------解决方案--------------------
关注一下
------解决方案--------------------
我跟踪了一下,是有几个连数据库的线程无法自动关闭,一直暂停状态,为什么?
___________________________________________________________________

如果不嫌麻烦,把你那个连数据库的线程的代码贴上来看看.
------解决方案--------------------
xmlThread.Join(10000),因该是这个问题造成的,线程调用了外部程序,外部程序没有结束的情况下,超时强制终了线程,终了线程失败!