【问题标题】:Scheduled .NET code execution in hosted environment?在托管环境中计划执行 .NET 代码?
【发布时间】:2010-12-07 19:35:45
【问题描述】:

我在一个控制台应用程序中有大约 40 行 .NET 代码,用于读取和 RSS 提要并将信息存储在数据库中。只要 RSS 提要存在(无限期地),我就需要每天晚上执行此代码。目前,我只是启动控制台应用程序。从我家的电脑。

因为我无法相信自己每天晚上都记得这样做,所以我需要托管此代码。我想以某种方式拥有这个应用程序。或代码(它可以很容易地放入 ASP.NET 页面代码隐藏并在页面加载时触发执行)自动运行,而无需我运行控制台应用程序。手动。

有什么想法吗?

编辑:我不想在我的电脑上运行这段代码;我不能保证我的电脑每晚都不会休眠或连接到互联网。

编辑:现在我正在考虑在 global.asax 的 Application_Start 中使用 BackgroundWorker 生成一个后台线程,让它每天下载一次 RSS 提要,其余时间使用 Thread.Sleep()。

【问题讨论】:

  • @Chris,您的任何想法都应该放在答案中,以便可以投票赞成或反对。

标签: c# .net hosting scheduled-tasks


【解决方案1】:

我建议只使用“at”命令,而不是将这个小应用程序托管在某个地方。

C:\>at /?
The AT command schedules commands and programs to run on a computer at
a specified time and date. The Schedule service must be running to use
the AT command.

【讨论】:

  • 我一直认为 at 是在需要执行一次作业时使用的东西,对于需要在特定时间(例如每晚)执行多次的作业我使用 cron (@987654321 @)
【解决方案2】:

您可以使用 Windows built-in 任务调度程序来启动控制台应用程序。

【讨论】:

  • -1 这仅在他具有控制台访问权限时才有效,通常“托管环境”意味着他没有。
【解决方案3】:

尽管存在争议,但 Jeff Atwood 在博客中介绍了他们如何使用缓存过期为 SO 实现这一目标。查看https://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

您可以使用类似的方法并安排缓存在您希望进程启动时到期。

【讨论】:

    【解决方案4】:

    你看过Quartz Scheduler for .NET吗?

    标语:Quartz.NET 是一个功能齐全的开源作业调度系统,可用于从最小的应用程序到大型企业系统。

    【讨论】:

      【解决方案5】:

      向您的网络主机发送电子邮件。一些托管主机会为您设置计划任务。

      他们可能对如何调用计划任务有不同的政策(即,有些可能要求它是 aspx 页面而不是 EXE)

      【讨论】:

        猜你喜欢
        • 2023-03-29
        • 2012-07-03
        • 1970-01-01
        • 2012-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-16
        • 1970-01-01
        相关资源
        最近更新 更多