C#如何杀死父线程

标签 c# multithreading parent kill

一个父线程有多个子线程。

如果用户点击停止按钮,父线程应该与所有子线程一起被终止。

//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。

最佳答案

一般建议:不要杀死线程(参见例如 Killing a thread )。涉及各种令人讨厌的资源泄漏和数据损坏风险。

改为让线程表现良好,并通过您喜欢的任何 IPC 机制让它们在收到信号时完成工作。

我不记得 .NET API 可以识别父线程和子线程。这将使您有责任跟踪这种关系。

关于C#如何杀死父线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2737458/

相关文章:

c# - 使用反射获取对象函数

multithreading - 有没有办法给外部线程命名?

javascript - 关于 jQuery 中的parent()和prev()的非常基本的问题

html - div 与其内部的 div 一样宽

c# - Linq to Entities Distinct 从句

c# - 将 ApplicationFrameHost 托管的 UWP 应用程序连接到它们的实际进程

c - 多线程 C/C++ 变量无缓存 (Linux)

wpf - 从另一个线程更快地刷新 TextBlock

Linux 管道和重定向输出

c# - MarshalAsAttribute 字符串数组