【问题标题】:Schedule a windows service to run every two hours安排 Windows 服务每两小时运行一次
【发布时间】:2011-04-06 11:45:20
【问题描述】:

我已经创建了 Window Service VS2010,现在我想安排该服务在每 2 小时后运行一次。为此,代码是什么..

【问题讨论】:

  • 抱歉,我不明白 - 你有 Windows 服务还是 Web 服务?您需要在 Windows 服务中设置计时器还是需要某种机制来调用 Web 服务调用?
  • 我需要在你的 windows 服务中设置一个计时器
  • @cHao:是的,使用操作系统提供的功能应该是默认的。唉,旧版本的 TS 很烦人而且有些古怪(在 cca XP SP1、IIRC 之前),所以人们仍然禁用 TS,即使它不再是一个好主意。所以 Windows 的代码不能可靠地依赖于实际工作的 TS :(

标签: c# windows-services scheduling


【解决方案1】:

您可以在 ThreadPool 类中使用 RegisterWaitForSingleObject 方法。

您的服务代码应如下所示(从herehere 大量窃取):

private ManualResetEvent resetEvent = new ManualResetEvent(false);
private RegisteredWaitHandle handle;

public void OnStart()
{
    resetEvent.Reset();
    handle = ThreadPool.RegisterWaitForSingleObject(resetEvent, callBack, null, 7200000, false);
}

public void OnStop()
{
    reset.Set();
}

private void callBack(object state, bool timeout)
{
    if (timeout)
    {
        //Do Stuff Here
    }
    else
    {
        handle.Unregister(null);
    }   
}

【讨论】:

    【解决方案2】:

    在 Debug 或 Release 文件夹中,您将拥有该文件的 .exe 版本。

    使用任务调度程序随时运行它。

    在 Windows XP 和 Server 2003 上,您可以从“开始”菜单访问它,然后单击“设置”,然后单击“控制面板”到“计划任务”

    以上内容将不断利用您的资源。对于间歇性使用 PS 服务可以完成这项工作: http://technet.microsoft.com/en-us/sysinternals/bb897542.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      • 2018-02-05
      • 2019-06-29
      相关资源
      最近更新 更多