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

时间:2012-04-26 06:24:10

标签: c# .net multithreading mef

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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