如何定期手动 运行 一个 windows 服务

How to manually run a windows service periodically

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

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);
    }
}

您应该能够使用 ServiceController.

启动不是 运行 的服务
using (var sc = new ServiceController("NameOfYourService", "NameOfYourServer"))
    sc.Start();