4

如何使用 C#/.NET 进行简单的作业调度?

假设我有一个方法(某个类),我想每天每小时每周等自动运行。

有没有一种简单的方法可以做到这一点?

4

2 回答 2

11

您可以通过三种方式在 .net 中执行此操作

1)创建一个windows服务。如果在 Windows 上(假设您使用的是 Windows 7),您点击开始按钮并键入“查看本地服务”,然后单击结果,您在此处看到的所有内容都是 Windows 服务。当您编写 Windows 服务代码时,它基本上是一个包含在代码中的控制台应用程序,用于安装服务并设置调度时间。有很多关于如何创建 Windows 服务的教程。这是微软的指南: http: //msdn.microsoft.com/en-us/library/zt39148a (v=vs.80).aspx

2)创建一个“exe”应用程序,然后放入“任务计划程序”。再次,点击开始按钮并搜索“任务计划程序”。这与 Windows 服务的不同之处在于您可以从任务调度程序而不是在您的应用程序中控制调度。此外,过去您必须在重新启动时重新启动计划任务,因为 Windows 服务可以设置为在操作系统启动时启动(我不确定此规则是否仍然适用,我没有使用任务计划程序一阵子)。这是微软关于如何做到这一点的指南:http: //windows.microsoft.com/en-GB/windows7/schedule-a-task

3) 您还可以查看 Quartz.NET,它是一个企业级作业调度框架。我已经用了好几次了,效果很好。Quartz.NET 可以在这里找到:http: //quartznet.sourceforge.net/

您可能还想看的另一件事是“Topshelf”。这使得开发 Windows 服务更容易:http ://topshelf-project.com 。我自己没有用过,但认识很多人用过,他们推荐过。

在将更多细节添加到问题后进行编辑

如果您正在寻找一种可以使用某种 cron 作业等效项调用类上的方法的方法,那么没有办法做到这一点。您需要使此类成为应用程序 (exe) 的一部分,然后使用上述方法之一来安排该 exe 的执行。

最快和最简单的方法(不一定是最好的,具体取决于您的应用程序需求)是创建一个简单的控制台应用程序(http://msdn.microsoft.com/en-us/library/ms438026(v=office.14).aspx)。将您正在谈论的类复制到其中,然后调用您希望在应用程序的 main 方法中安排的方法。然后如上所述使用任务调度程序。

希望有帮助。

于 2012-12-09T15:07:46.073 回答
1

如果您有一个 ASP.NET 应用程序,最简单的方法是让 Windows 任务计划程序在您的应用程序中调用一个特殊的 URL,使用curl.exe.

Windows 任务计划程序也可用于启动您的自定义 EXE。

于 2012-12-09T16:25:44.720 回答