C# - 任务调度

时间:2011-08-19 09:03:47

标签: c# scheduling scheduled-tasks

我使用的是Asp.Net - Web Forms - Framework 3.5

我想在午夜12点向网站用户发送电子邮件。我已经制作了一个发送电子邮件的类方法,但在12月中旬自动执行它的最佳方法是什么?

在linux中,我们有cron作业,windows上的专用和共享服务器是什么?

8 个答案:

答案 0 :(得分:3)

最简单的方法是编写一个发送电子邮件的小命令行应用程序,然后每天午夜使用Windows Task Scheduling运行应用程序。

答案 1 :(得分:2)

作为cron替代品,您可以尝试at命令并运行一些可执行文件来发送电子邮件,或者您可以创建一个Windows服务来完成这项工作。

答案 2 :(得分:2)

当在共享主机上,无法访问任务调度程序时,我经常会在Global.asax中放入一些代码,这会在应用程序的OnStart中创建一个新的静态Timer对象。然后,当Timer过去时,我会每小时左右运行一次我的类方法。

这样做的缺点是,您必须保持应用程序池全天候运行,否则它将会降速并且您的代码不会每小时运行一次。

另一种方法是创建一个运行类方法代码的页面,并在每晚午夜自动从外部源触发该页面。你可以设置一个wget / curl脚本来以编程方式命中该URL。

最后,您还有其他解决方案,详见下一篇文章: Can you run a "service" that runs a scheduled task from an ASP.Net project?

答案 3 :(得分:1)

编写一个定期调用代码以发送电子邮件的Windows服务可以完成这项工作。

答案 4 :(得分:0)

您可以使用任务调度程序,它相当于chron的winnows,或者您可以编写定期检查时间的Windows服务,如果是在午夜之后,它可以发送电子邮件。

您无法从Web表单执行此操作,因为该代码仅在用户在站点上时执行,并且让线程保持运行是非常糟糕的做法;无论如何,iis可能会回收它。

答案 5 :(得分:0)

我使用Quartz.NET取得了一些成功,但是其他人建议的任务调度程序和简单的命令行应用程序组合是最简单的方法。

答案 6 :(得分:0)

在Windows服务和app.config文件中创建应用程序,使用计时器并将计时器设置为午夜12点。

答案 7 :(得分:-1)

如果您需要在共享托管环境中运行计划任务/ cron作业,您可以在此处找到免费的Web cron作业提供程序列表: ASP.NET: Free scheduling of your tasks (Cron jobs)