c# -任务调度

本文关键字:任务调度 | 更新日期: 2023-09-27 18:06:00

我使用Asp。. Net - Web Forms - Framework 3.5

我想在午夜12点给网站用户发电子邮件。我做了一个发送电子邮件的类方法,但是在午夜12点自动执行它的最好方法是什么?

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

c# -任务调度

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

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

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

这样做的缺点是,你必须保持你的应用程序池24/7运行,否则它会旋转,你的代码不会每小时运行。

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

最后,你还有其他的解决方案,详见另一篇文章:你能运行一个"服务"吗?从ASP中运行计划任务。净项目吗?

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

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

你不能在你的web表单中这样做,因为这些代码只在用户访问网站时执行,并且让线程运行是非常糟糕的做法;我很可能会回收它

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

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

如果您需要在共享主机环境中运行计划任务/cron作业,您可以在这里找到免费的web cron作业提供程序列表:ASP。. NET:免费调度任务(Cron作业)