我们在Visual Studio .NET 2008中使用VB.NET开发了两项服务。两者都由单独的个人(其中一个是我自己)完全分开开发,但两者在引导过程中都报告了相同的错误:启动后,系统事件日志中会显示“服务在启动时挂起”。在该消息之后,服务继续正常启动(仅仅几条消息就是服务启动的通知)。是否有关于加载.NET框架或JIT编译导致这个或哪些代码的缓慢?手动完成后,它会启动并停止。 Mine是一个非常简单的服务,除了框架提供的启动代码之外,没有启动代码。Windows服务启动时启动
更新1: 这是我的一切处理通信:
host = New ServiceHost(GetType(FSE.Licensing.FSELicense))
host.Open()
FSELicense没有定义构造函数,所以它只是得到通过VB.NET提供的默认为空公共构造,我猜测。
更新2: 我的问题已经演变为基于一位同事提出的解决方案,该解决方案据说解决了问题。事实上,这个解决方案实际上只是添加了一个我认为不必要的服务的依赖关系,因为我的服务在请求完成之前不会执行任何操作。但是,它确实声明了一个COM类型的变量。是否有可能引用此COM类型(即使没有实例)会导致COM DLL与服务同时加载,并且可能依赖于服务?如果是的话,我没有意识到COM引用就像.NET中的静态链接。
根本没有启动代码?甚至没有实例化一个监听事件的类?如果在启动时没有做任何事情,这个服务究竟做了什么? – David 2009-08-05 16:47:20
是的,它实例化一个侦听事件的类,但我把它当作框架代码:)我想这不是真的。 – BlueMonkMN 2009-08-05 19:40:07
host.Open()是做什么的? 通常,您不应该在OnStart方法中执行任何工作。您应该启动一个线程来完成实际工作,以便OnStart方法能够及时返回。 – 2009-08-06 17:16:51