使用 Windows 任务计划或使用 quartz 调用 c# 控制台应用程序之间的差异

本文关键字:应用程序 控制台 之间 调用 quartz 任务 Windows 计划 使用 | 更新日期: 2023-09-27 18:35:46

我开发了一个 c# 控制台应用程序,它实现了长时间运行的过程(大约需要 30-40 分钟才能完成)。现在,我想在我的 asp.net mvc Web 应用程序中创建一个简单的 GUI,它允许用户设置何时运行此控制台应用程序的计划。因此,如果我们考虑以下 2 个一般要求,则不确定我应该考虑哪种方法来实施它:-

  1. 调用 c# 控制台应用程序。
  2. 能够在我的 ap.net mvc Web应用程序中创建视图,允许用户管理计划设置?

那么这两种方法的优缺点是什么呢?

  1. 使用第三方工具(如石英)来调度控制台应用程序的执行?
  2. 或者使用Windows任务调度程序(我们正在使用Windows服务2012 R2)?

谢谢

使用 Windows 任务计划或使用 quartz 调用 c# 控制台应用程序之间的差异

第一种方法的优点是你不依赖于Windows特定的功能,并且希望有一天能够将你的代码移植到Core CLR下,并在其他平台(例如Linux)上运行它。显然,如果你采用第一种方法,你不应该把Quarz放在你的 ASP.NET MVC应用程序中,而应该有一个单独的Windows服务。这样做的原因是,长时间运行的线程绝对是您在 Web 应用程序中不想要的,因为您无法控制何时可以回收 AppPool。

另一方面,Windows任务计划程序的第二种方法可能首先更容易实现。

这些机制之间的主要区别在于,Windows 任务调度程序作为 Windows 的内部组件连续运行,而 Quartz 是一个允许在应用程序域内运行调度程序的库。这意味着当您使用 Quartz 时,调度程序依赖于应用程序池回收。

换句话说,Windows Tasks Scheduler更稳定,但Quartz使用起来更灵活。我建议您使用 Quartz,但要特别注意应用程序池设置(空闲超时),以避免调度程序意外停止。