【问题标题】:C# child thread is still working even main thread exit即使主线程退出,C# 子线程仍在工作
【发布时间】:2015-06-30 03:15:40
【问题描述】:

我碰巧从 msdn 中读到了 Semaphore 类示例,如下所示: https://msdn.microsoft.com/en-us/library/system.threading.semaphore%28v=vs.110%29.aspx

这是一个控制台应用程序,但是让我感到困惑的是,即使主线程退出,子线程也能工作。

据我了解,当主线程/进程退出时,所有子线程都会终止,这就是为什么我们通常会在主线程停止之前发出信号并等待子线程完成。 我错了还是由于参考而在.net中改变了行为?

【问题讨论】:

  • 这真的不是关于主线程和子线程,而是关于前台和后台线程。任何活动的前台线程都会使进程保持活动状态。

标签: c# multithreading


【解决方案1】:

如果希望子线程在父线程终止时中止,则必须将其设置为后台线程。

t.IsBackground = true;
t.Start(i);

否则,所有前台线程都会在进程退出之前运行完成

【讨论】:

  • 谢谢,这是.net中引入的概念。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-31
  • 1970-01-01
相关资源
最近更新 更多