我开发了一个c#控制台应用程序,它实现了一个长时间运行的过程(大约需要30-40分钟才能完成)。 现在我想在我的asp.net mvc Web应用程序中创建一个简单的GUI,它允许用户设置运行此控制台应用程序的时间表。 因此,如果我们考虑这两个一般要求,不确定我应该考虑采用哪种方法: -
那么这两种方法的优点和缺点是什么?
由于
答案 0 :(得分:1)
第一种方法的优点是您不依赖于Windows特定功能,并希望有一天能够在Core CLR下移植您的代码并在其他平台(例如Linux)上运行它。显然,如果你采用第一种方法,你不应该将Quarz放在ASP.NET MVC应用程序中,而应该使用单独的Windows服务。原因是因为长时间运行的线程肯定是Web应用程序中不需要的,因为您无法控制何时可以回收AppPool。
另一方面,Windows任务调度程序的第二种方法可能更容易实现。
答案 1 :(得分:1)
这些机制之间的主要区别在于Windows Tasks Scheduler作为Windows的内部组件连续运行,而Quartz是一个允许在应用程序域内运行调度程序的库。这意味着当您使用Quartz时,调度程序依赖于应用程序池的回收。
换句话说,Windows Tasks Scheduler更稳定,但Quartz使用起来更灵活。我建议你使用Quartz,但要特别注意应用程序池设置(空闲超时),以避免意外的调度程序停止。