c# - 通过 Windows 服务启动和停止并发线程

标签 c# .net multithreading mef

我是 .NET 环境的新手。我需要一个 Windows 服务,其 StartStop 方法将调用特定的类,分别说 MainContext 的 Start 和 Stop 方法。 MainContext 类将包含通过 MEF 加载的扩展列表。 .每个扩展都需要以并发方式作为单独的线程运行。

MainContext 类将包含两个公共(public)方法StartStop,它们的返回类型均为 void 并且不包含任何参数。在调用 Start 方法时,它将以并发方式为通过 MEF 加载的每个扩展启动线程。而 Stop 方法将停止所有由 Start 方法启动的线程。

在这种情况下最好的线程实践是什么?我很困惑。我应该使用 System.Threading.Tasks.Task 类还是 System.Threading.Thread 类进行多线程处理,还是应该使用任何其他技术?哪个更适合我的要求,并能为我提供更大的灵 active 和稳定性?

最佳答案

我已经使用 MAF 完成了类似的事情,使用加载项监视文件服务器、数据库和 Web 服务。 Windows 服务调用每个加载项中的 Start 和 Stop 方法,这反过来启用或禁用 System.Timer.Timers。实际处理是在每个计时器的经过事件处理程序上完成的,该处理程序在池线程上运行。

其中一个加载项监视使用进程间通信的数据库表,以便我可以从 UI 应用程序监视和控制其他加载项。

关于c# - 通过 Windows 服务启动和停止并发线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10328234/

相关文章:

c# - 带有 .Net Core 的 Azure Active Directory

c# - 如何使用 MSBuild 和 IIExpress.exe 从命令行构建和运行 .NET Framework MVC 项目

c - 确定主线程 pthread_create 中的参数在 C 中是否为 NULL

multithreading - 防止 mongodb 死于 'state should be: open'

java - 与 DBCP 连接池和线程的混淆

c# - 如何使用 LINQ 获取 int 数组中的前 3 个元素?

c# - C# 中的停靠面板套件不会触发 mousedown 事件

c# - 防止 Visual Studio 添加新类的默认引用和使用

c# - ComboBox 文本垂直居中对齐

c# - 从 C# 中选择 SQL Server 数据库中的特定记录