在我的多线程应用程序失败后,未完成的线程是否会挂起?

时间:2012-04-19 18:13:10

标签: c# multithreading

我的应用程序在自己的线程上启动多个长时间运行的函数/方法。当其中一个线程遇到错误时,我的程序崩溃(如预期的那样)。但问题是,应用程序生成的所有线程是否都停止执行?还是他们在某个地方闲逛?如果是这样,我是否需要编写另一个应用程序来监控它们,以便我可以杀死它们?

谢谢!

3 个答案:

答案 0 :(得分:12)

当进程完成时,该进程中包含的所有线程都将终止。线程不能存在于进程外部。应用程序崩溃=进程终止。

答案 1 :(得分:1)

如果创建所有线程的进程被终止/中止,则操作系统会自动中止线程。换句话说:运行进程=至少一个正在运行的线程,被杀死进程=所有线程终止。

答案 2 :(得分:1)

如果从线程生成进程,则生成的进程将在生成进程结束后继续运行。您可以在任务管理器和代码中终止进程树,但默认情况下,如果应用程序以非正常方式结束,则生成的进程将继续运行。

我假设这就是你说的时候的意思

  

我的应用程序在自己的线程上启动多个长时间运行的进程

但也许我误解了你的意思