一个父线程有多个子线程。
如果用户点击停止按钮,父线程应该与所有子线程一起被终止。
//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/