前台线程停止时后台线程不停止?

时间:2019-12-07 09:57:00

标签: c# multithreading

当我运行以下链接中提供的示例时: https://docs.microsoft.com/en-us/dotnet/api/system.threading.thread.isbackground?view=netframework-4.8

Scanner sc = new Scanner(System.in).useDelimiter("[,\\s+]");

根据文档,前台线程停止时后台线程应停止。我在计算机上运行此示例,后台线程没有停止,并继续在for循环中打印数字。此外,数字10是仅打印一次,而不是示例中的两次,因为for循环从0到9运行。这是我从示例中收到的输出,没有对示例进行任何修改:

https://pastebin.com/AsfEX6gf

是文档错误还是取决于CPU体系结构?

1 个答案:

答案 0 :(得分:4)

我用不同的CLR进行了尝试,并且同时使用了.Net Framework和.Net Core-可以正常工作。 但是,正如注释部分所述,如果将npm install -g @angular/cli放在Main函数的末尾-它会阻塞主线程,直到您提供输入为止,并且由于您的主线程是前台线程-后台线程仍在继续计数。