c# Windows Service启动速度不够快

本文关键字:不够 速度 启动 Windows Service | 更新日期: 2023-09-27 17:52:52

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

编辑:我刚刚发现汇编没有签名,其余的都是。它使用一些已签名的程序集,但服务本身没有签名。

这段代码运行在一个虚拟机中,每当主机运行缓慢而虚拟机正在启动时,服务将无法启动,并出现以下错误:

等待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();
}

谢谢。

c# Windows Service启动速度不够快

我认为这很可能是由于您在可执行文件上的强名称签名。一般来说,在可执行文件上这样做不是一个好做法(请参阅此处)。我在我的一个项目中也遇到过同样的问题,一个可执行文件花了非常多的时间来启动,结果发现这是由于可执行文件的强名称签名造成的。

考虑将AutoLog = false设置为false。我已经看到这个标志可能导致您所描述的超时。