我有一个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();
}
谢谢。
答案 0 :(得分:0)
我认为这很可能是由于您对可执行文件的强名称签名。一般来说,在可执行文件(see here)上执行此操作并不是一种好习惯。我在我的一个项目中遇到了同样的问题,其中一个可执行文件花费了大量的时间来启动,并且结果是由于强大的名称签署了可执行文件(.NET 2.0)。
答案 1 :(得分:0)
考虑转动AutoLog = false。我已经看到这个标志可以导致你描述的超时。