【问题标题】:.Net long-running scheduled code execution.Net 长时间运行的计划代码执行
【发布时间】:2011-01-14 14:47:16
【问题描述】:

我现在正在做几个项目,我真的希望有某种组件可以指定时间和日期,然后执行某种方法。

DateTime date = new DateTime(x,x,x,x,x,x);
ScheduledMethod sMethod = new ScheduledMethod(date, [method delegate of some sort]);

\\at the specified date, sMethod invokes [method delegate of some sort]

我知道我可以将 Windows Workflow Foundation 作为一个长期运行的进程来执行此操作,这对某些事情有好处,但有其他选择吗?工作流程的细节并不完全直截了当,能够为轻量级任务部署更简单的东西会很好。例如,每天检查一次网络文件夹并删除任何超过 30 天的文件的方法。我意识到这可能是天方夜谭,但这对于自动化某些日常维护任务(计划的 sql 操作、文件系统清理、例行电子邮件发送等)非常有用。它不一定必须是.Net,但这就是我来自的地方。有什么想法吗?

【问题讨论】:

  • Windows 服务应该是必须始终运行的应用程序。计划任务应该是在未来某个时间仅运行很短时间的应用程序。这最适合由计划任务处理。

标签: .net deployment workflow long-running-processes


【解决方案1】:

试试 windows 任务调度器。用 C# 编写一个程序来执行所需的任务,然后在任务调度程序中安排它以指定的时间间隔运行。对于从文件夹中删除文件之类的事情,这非常有效。

【讨论】:

    【解决方案2】:

    您可以部署Windows Service 或Windows Scheduled Task。

    另外,请参阅this SO 问题。

    【讨论】:

      【解决方案3】:

      我通常为该任务制作一个控制台应用程序,并将其配置为 Windows 中的计划任务。这通常效果很好。向应用程序添加一些不错的日志记录,以便在出现任何问题时以简单的方式进行故障排除。

      【讨论】:

        【解决方案4】:

        Microsoft 具有非托管代码http://msdn.microsoft.com/en-us/library/aa383614(v=VS.85).aspx 的任务计划程序接口。但是,如果您需要托管库,您可以使用围绕 Microsoft 任务计划程序 http://www.codeproject.com/KB/cs/tsnewlib.aspx 的包装器或用于 .NET QuartzNet 的企业作业计划程序。

        【讨论】:

        • Quartz.NET 在我的使用中非常棒。
        猜你喜欢
        • 1970-01-01
        • 2018-05-06
        • 2010-12-07
        • 2019-05-18
        • 1970-01-01
        • 2022-08-14
        • 2011-11-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多