我碰巧从 msdn 上读到了如下的 Semaphore 类示例: https://msdn.microsoft.com/en-us/library/system.threading.semaphore%28v=vs.110%29.aspx
这是一个控制台应用程序,但是让我感到困惑的是子线程甚至可以在主线程退出时工作。
据我了解,当主线程/进程退出时,所有子线程都将终止,这就是为什么我们通常在主线程停止之前发出信号并等待子线程完成。 是我错了,还是由于引用,.net 中的行为发生了变化?
最佳答案
如果您希望子线程在父线程终止时中止,则必须将其设置为后台线程。
t.IsBackground = true;
t.Start(i);
否则,所有前台线程在进程退出前运行完毕
关于即使主线程退出,C# 子线程仍在工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31128935/