【问题标题】:How can I schedule my windows service to run in every ten minutes如何安排我的 Windows 服务每十分钟运行一次
【发布时间】:2014-09-15 10:04:11
【问题描述】:

我正在使用从某些设备下载数据的 Windows 服务。如何实用地安排我的 Windows 服务每 10 分钟运行一次。我想每 10 分钟从这些设备下载数据。这是一个好方法吗使用计时器并将代码放在 Elapsed 方法中?或者还有其他方法可以执行此任务吗?

【问题讨论】:

  • 使用 Windows 的任务计划程序。请在您的问题上多加努力,不要只是复制标题并展示您尝试过的内容。您确定希望服务每十分钟运行一次,还是希望它每十分钟运行一次?
  • 您好,谢谢您的建议。
  • 我想每十分钟执行一次。
  • 我认为 WTS 对于这个频率来说太重了 - 我会选择带有计时器的 Windows 服务。

标签: .net windows-services


【解决方案1】:

不确定您在此过程中的进度,但假设您刚刚开始,请按照分步说明here 创建可使用 InstallUtil.exe 安装的基本 Windows 服务。如果您希望 Windows 服务可执行文件自行安装和卸载,请按照分步说明进行操作 here。这应该可以帮助您入门。

现在,要每 10 分钟运行一次,您需要一个计时器。这是一个可能看起来像的示例。

using System.Timers;
public partial class Service1 : ServiceBase
{
    private Timer _timer;

    protected override void OnStart(string[] args)
    {
        _timer = new Timer(10 * 60 * 1000);  // 10 minutes expressed as milliseconds
        _timer.Elapsed += new ElapsedEventHandler(OnTimerElapsed);
        _timer.AutoReset = true;
        _timer.Start();
    }

    protected override void OnStop()
    {
        _timer.Stop();
        _timer.Dispose();
    }

    private void OnTimerElapsed(object sender, ElapsedEventArgs e)
    {
        // Do your work here...
    }

HTH

【讨论】:

  • 您可能希望在进入 OnTimerElapsed 方法时暂停/停止计时器,如果您的处理可能运行超过 10 分钟,则在退出该方法之前恢复它。
【解决方案2】:

您可能希望在进入 OnTimerElapsed 方法时暂停/停止计时器,如果您的处理可能运行超过 10 分钟,则在退出该方法之前恢复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 2012-02-05
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2017-12-16
    相关资源
    最近更新 更多