界面自动退出,但是任务管理器中进程还在,且无法结束

时间:2022-08-10 14:58:16
for (int i = 0; i < CGlb.Instance().CountThreadsRedirected; i++)
            {
                CGetRedirectRawNewOld objNewOld=new CGetRedirectRawNewOld(list2StrStatus[i],i);
                listRawNewOldObj.Add(objNewOld);
                Thread t = new Thread(new ThreadStart(objNewOld.genRawNewOldList));
                t.SetApartmentState(ApartmentState.STA);
                m_listThreads.Add(t);
                t.IsBackground = true;
                t.Start();
            }
            int iDealedNum = 0;
            while (true)
            {
                int iOldDealedNum = iDealedNum;
                Thread.Sleep(30000);
                iDealedNum = CGlb.Instance().CountRedirectedDealed;
                if (iDealedNum==iOldDealedNum)
                {
                    for (int i = 0; i < m_listThreads.Count;i++ )
                    {
                        m_listThreads[i].Abort();
                    }
                    break;
                }
            }

开了300个线程,下载网页,基本都在最后快下载完的时候程序界面就自己没了(调试状态,此时vc也还处于调试状态),然后在任务管理其中的进程还在,且无法结束任务,360任务管理器也无法结束,上面是主要代码,判断进程结束依据是已经下载的文件数量不再变化时退出所有线程。开始使用的join也是同样问题,后来用while循环也是,估计错误出在某个或者某些线程,请各位给个提示,这种问题通常是由什么原因引起的

2 个解决方案

#1


应用程序退出时直接Kill相关的线程即可。 

#2


线程没关,所以进程中还有

#1


应用程序退出时直接Kill相关的线程即可。 

#2


线程没关,所以进程中还有