如何在启动Windows服务前延迟5分钟?

Ehs*_*adi 6 c# windows-services

我正在使用.Net 4构建一个简单的Windows服务,当我想在启动服务之前延迟5分钟时会出现问题.

protected override void OnStart(string[] args)
{
    // make a 5 min delay
    // do something
}
Run Code Online (Sandbox Code Playgroud)

但几秒钟后服务停止并给我一个超时错误(在事件日志中看到这个).我该怎么办?

Jal*_*aid 5

在新线程中启动长时间运行的进程,因此不要阻止该OnStart方法.例:

using System.Threading;

protected override void OnStart(string[] args)
{
    ThreadPool.QueueUserWorkItem(new WaitCallback((_) =>
    {
        Thread.Sleep(5 * 1000 * 60);//simulate 5 minutes work

       // do something
    }));
}
Run Code Online (Sandbox Code Playgroud)

  • TomTom你是不是所有版本的Windows都支持延迟服务选项,因为我使用的是Windows 2003. (2认同)