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();
}
谢谢。
我认为这很可能是由于您在可执行文件上的强名称签名。一般来说,在可执行文件上这样做不是一个好做法(请参阅此处)。我在我的一个项目中也遇到过同样的问题,一个可执行文件花了非常多的时间来启动,结果发现这是由于可执行文件的强名称签名造成的。
考虑将AutoLog = false设置为false。我已经看到这个标志可能导致您所描述的超时。