如何在 .NET 中实现夜间进程?

Posted

技术标签:

【中文标题】如何在 .NET 中实现夜间进程?【英文标题】:How to implement a nightly process in .NET? 【发布时间】:2011-06-20 08:00:30 【问题描述】:

我有一组任务,我想每天晚上执行。

这些任务依次包括查询数据库、移动然后重命名一些图像以及更新数据库表。 My first thought 曾创建一个 SQL Server 作业并使用 xp_cmdshell 移动文件,但经过一番研究后我决定不这样做。

将其实现为 .NET 应用程序的最佳方式是什么?我应该创建 Windows 服务吗?计划每晚运行一次的控制台应用程序?其他一些我什至不知道的很酷的方式?

【问题讨论】:

如果你想要计划任务,就像你标记的那样,计划任务有什么问题? 我会使用久经考验的真正 Windows 任务计划程序来启动 .NET 控制台应用程序。 【参考方案1】:

我通常只是将其作为计划的控制台应用程序来执行。也许我很无聊……

【讨论】:

功能不一定要性感 :) 我同意...为什么要让您的机器做任何多余的事情...一个简单的控制台应用程序是要走的路。仅当您在一天中的短时间间隔内发生某些事情时,服务才有意义。【参考方案2】:

您正在寻找的酷方法是Quartz.NET。它基本上是 .NET 的 cron 作业。

【讨论】:

【参考方案3】:

我通常将这类事情作为计划任务进行。如果它是一个 .Net/C# 控制台应用程序,请不要写入 Console.Out 或 Console.Error(计划任务几乎无头运行)。而是使用 log4net 并配置附加程序以写入日志文件。您还可以配置另一个附加程序以将错误记录到 Windows 事件日志中。

当然,更快、更简单的方法是将您的工作编写为 perl 脚本而不是编译代码,并安排好时间。

【讨论】:

【参考方案4】:

我在使用任务调度程序方面取得了很大的成功。它有很多近乎吓人的定制。我会试一试。

【讨论】:

【参考方案5】:

我只使用在我正在使用的服务器上运行的任务调度程序来完成此操作。我只是将它设置为在 11:30 到 12:30 之间的随机时间运行。 Kelloti 的想法可能更令人印象深刻。

【讨论】:

以上是关于如何在 .NET 中实现夜间进程?的主要内容,如果未能解决你的问题,请参考以下文章

如何在多进程系统中实现锁定?

如何在 .Net 中实现 ConcurrentHashSet

如何在 ASP.NET 中实现支付网关 [关闭]

如何在 .NET 中实现共享内存?

如何在不冻结 GUI 的情况下在单个插槽中实现阻塞进程?

如何在选择案例语句中实现枚举