使用Application Start中的Task模拟cron作业

时间:2011-09-27 07:03:49

标签: c# asp.net asp.net-mvc cron

我正在尝试找到一种非常简单的方法来为我的Web应用程序启动一个简单的cron作业。我在想的是在Application_Start事件中启动一个Task。这个任务将有一个while循环,并且像普通的cron作业那样每小时左右做一些动作。

这是一个好主意还是会给你带来一些麻烦?

我能想到的一些问题如下:

  • 任务突然停止工作或挂起。也许做一些故障转移 检查任务是否仍在运行的机制,如果没有 重启它。

  • 如果任务完全出错,我必须重新启动内存泄漏 整个申请。

  • 无法控制在动态更改任务,但这不应该是一个 我想做的事情的问题,但对其他人来说可能是。

有人对此有任何建议或经验吗?

2 个答案:

答案 0 :(得分:4)

在Web应用程序中执行cron作业是个坏主意。 IIS可以随时回收应用程序,您的工作将停止。我建议你在单独的Windows服务中执行此操作。你可以看看Quartz.NET。另一种可能性是控制台应用程序,它可以完成工作并在Windows Scheduler中进行调度。

答案 1 :(得分:4)

虽然Darin说在网络应用程序中做cron工作是一个坏主意(我在某种程度上同意他的意见),但在明智地使用和短期工作时可能并不是那么糟糕。
在Web应用程序中使用相同的Quartz.NET可能相当不错,我正在我的一个项目中使用 http://bugsquash.blogspot.com/2010/06/embeddable-quartznet-web-consoles.html用于小型作业并且运行良好 - 它易于监控(比监控远程Windows进程更容易),可用于共享主机。