从另一个线程启动新的进程,并以C#中止它
本文关键字:并以 进程 线程 另一个 启动 | 更新日期: 2023-09-27 18:28:06
如果我这样做:
new Thread(DoWork).Start();
void DoWork(){new Thread(DoMoreWork).Start();}
而我中止运行DoWork的第一个线程是DoMoreWork也会中止吗?如果没有,我如何中止sec线程(DoMoreWork)?
谢谢!
更新:
问题是,我用Microsoft.Scripting
运行脚本,为此,我启动了一个新线程,该线程从Microsot.Scripting
调用Execute()
方法,我希望能够中止脚本。我可以中止我的线程,但我不知道Execute创建哪个线程来运行脚本。
-
中止"父"线程不会停止"子"线程。
-
使用Thread.Artrt是个坏主意。您应该将线程设计为优雅地退出:例如,请参阅此问题的答案。
如果您将线程设计为优雅地退出(例如,当您发出事件信号时),这也将允许您杀死两个线程。
这是一个糟糕的设计。。。
你不应该这样做,因为如果第二个线程也挂起,第一个线程就不会关闭,GC也不会清理资源——死锁
线程应该并行运行,而不是在层次结构中同步。
在那里你可以找到一个很好的.net线程指南:http://www.albahari.com/threading/