如何定期手动运行Windows服务

时间:2015-04-28 18:23:20

标签: c# wpf windows-services

我有一个在服务器上每30分钟运行一次的Windows服务。我的老板要我在运行服务的应用程序的管理部分添加一个按钮,并检索当前信息。这是服务的当前代码......

protected override void OnStart(string[] args)
{
    _stop.Reset();
    //30 minutes = 1800000
    //5 minutes = 300000
    //1 minute = 60000
    _registeredWait = ThreadPool.RegisterWaitForSingleObject(_stop,
        new WaitOrTimerCallback(PeriodicProcess), null, 1800000, false);
}

protected override void OnStop()
{
    _stop.Set();
}

private void PeriodicProcess(object state, bool timeout)
{
    if (timeout)
    {
        // Periodic processing here
    }
    else
    {
        // Stop any more events coming along
        _registeredWait.Unregister(null);
    }
}

1 个答案:

答案 0 :(得分:1)

您应该可以使用ServiceController启动未运行的服务。

using (var sc = new ServiceController("NameOfYourService", "NameOfYourServer"))
    sc.Start();