加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#如何杀死父线程

发布时间:2020-12-16 00:13:35 所属栏目:百科 来源:网络整理
导读:父母有几个子线程. 如果用户单击停止按钮,则应使用所有子线程终止父线程. //calls a main thread mainThread = new Thread(new ThreadStart(startWorking)); mainThread.Start(); //////////////////////////////////////////////// startWorking(){ ManualR
父母有几个子线程.

如果用户单击停止按钮,则应使用所有子线程终止父线程.

//calls a main thread           
 mainThread = new Thread(new ThreadStart(startWorking));
 mainThread.Start(); 
////////////////////////////////////////////////
   startWorking()
{
    ManualResetEventInstance                    =   new ManualResetEvent(false);
    ThreadPool.SetMaxThreads(m_ThreadPoolLimit,m_ThreadPoolLimit);

    for(int i = 0; i < list.count ; i++)
   {        

        ThreadData obj_ThreadData   =   new ThreadData();
        obj_ThreadData.name      =   list[i];

        m_ThreadCount++;             

        //execute 
        WaitCallback obj_waitCallBack = new WaitCallback(startParsing);

        ThreadPool.QueueUserWorkItem(obj_waitCallBack,obj_ThreadData);
    }
  ManualResetEventInstance.WaitOne();
}

?我想杀死mainThread.

解决方法

你肯定不想在这里杀死任何线程,因为(除其他原因)所讨论的“子线程”都来自线程池.

有关如何创建和终止线程的信息,请参见this article.

在您的情况下,您有多个线程都在使用startParsing方法.假设此方法中有一个循环,您将创建一个名为_stillWorking的类级别bool,并在startWorking方法的开头将其设置为true.

在startParsing的循环内部,每次检查_stillWorking都是真的.要“取消”所有这些线程,那么,只需将_stillWorking设置为false并等待线程完成.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读