c# - 如何关闭 Windows 服务应用程序的所有后台线程?

标签 c# multithreading windows-services

我创建了一个 Windows 服务应用程序,其中我打开了大约 10000 个线程,我想关闭所有线程,就像关闭 winform 应用程序时所有后台线程都关闭一样,我该如何实现?我不想将对所有这些线程的引用存储在一个数组中并使用循环关闭所有线程。

在我使用 Winform 应用程序之前,当我关闭 Winform 应用程序时,所有后台线程都会自行关闭。我想完成类似的事情来关闭 Windows 服务应用程序中的所有线程

任何想法将不胜感激。

最佳答案

如果您设置线程属性 myThread.isBackground = true,该线程将随着所有前台线程的终止而终止(当您关闭应用程序时)。

但是,创建 10000 个线程并不是一件好事,因为操作系统将花费更多的时间在线程之间切换,而不是实际执行线程的代码。在普通计算机上执行那么多线程实际上比在 2 - 4 核 CPU 上执行 2 - 16 个线程(例如)效率低。

这是一本关于线程的优秀电子书。

PDF : http://www.albahari.info/threading/threading.pdf 网址:http://www.albahari.com/threading/

关于c# - 如何关闭 Windows 服务应用程序的所有后台线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17215026/

相关文章:

c# - 值类型的引用相等性

java - 确保主应用程序崩溃时停止无限循环线程

java - 将周期性任务与另一个线程同步

c# - SpecialFolder.MyDocuments 在控制台应用程序中提供正确的值,但在 Windows 服务中不提供

c# - 错误 1001 : The Specified Service Already Exists. 无法删除现有服务

c# - OWIN 自定义身份验证服务

c# - NHibernate 以编程方式映射

c# - .NET 中是否有匹配或异常正则表达式

Java httpURLConnection 线程化

c# - 编译输出类型为 Exe 的 Windows 服务