C#Windows服务无法快速启动

时间:2011-04-21 18:47:54

标签: c# .net windows-services

我有一个C#Windows服务。 OnStart()方法包含3行,他们所做的只是启动一个线程。类本身没有会导致延迟的静态对象。它就像服务一样简单。我的代码由自制密钥签名。

编辑:我刚刚发现装配没有签名,剩下的就是。它使用一些已签名的程序集,但服务本身不是。

此代码在虚拟机内运行,每当主机运行缓慢且此VM启动时,该服务将无法启动此错误:

  

等待ServiceName服务连接时达到超时(30000毫秒)。

将服务设置为延迟启动会修复它,但这是一个很长的延迟,而且非常烦人。有没有其他人有.NET服务(2.0)这个问题?

OnStart方法:

protected override void OnStart(string[] args)
{
    Thread startThread = new Thread(new ThreadStart(StartThread));
    startThread.IsBackground = true;
    startThread.Start();
}

StartThread方法,其中我所做的就是调用另一个类,以便OnStart不必等待静态变量初始化或构造函数方法结束。

private void StartThread()
{
    Worker mainThread = new Worker(this);
    mainThread.RunWorker();
}

谢谢。

2 个答案:

答案 0 :(得分:0)

我认为这很可能是由于您对可执行文件的强名称签名。一般来说,在可执行文件(see here)上执行此操作并不是一种好习惯。我在我的一个项目中遇到了同样的问题,其中一个可执行文件花费了大量的时间来启动,并且结果是由于强大的名称签署了可执行文件(.NET 2.0)。

答案 1 :(得分:0)

考虑转动AutoLog = false。我已经看到这个标志可以导致你描述的超时。