如何使用C#/ .NET进行简单的作业调度?
假设我有一个方法(某个类)我想自动运行每天,每小时,每周等等。
有没有一种简单的方法可以做到这一点?
答案 0 :(得分:11)
在.net
中有三种方法可以做到这一点1)创建一个Windows服务。如果,在Windows上(假设您在Windows 7上),点击开始按钮并键入“查看本地服务”,然后单击结果,您在此处看到的所有内容都是Windows服务。当您编写Windows服务代码时,它基本上是一个包含在代码中的控制台应用程序,用于安装服务并设置调度时间。有很多关于如何创建Windows服务的教程。以下是微软指南:http://msdn.microsoft.com/en-us/library/zt39148a(v=vs.80).aspx
2)创建一个“exe”应用程序,然后输入“Task Scheduler”。再次点击开始按钮并搜索“任务计划程序”。这与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方法中调用您要安排的方法。然后使用上述任务调度程序。
希望有所帮助。
答案 1 :(得分:1)
如果您有ASP.NET应用程序,最简单的方法是让Windows任务计划程序使用curl.exe
在您的应用程序中调用特殊URL。
Windows任务计划程序也可用于启动您的自定义EXE。