服务启动然后停止并显示消息:服务未及时响应启动或控制请求
The service starts and then stops with message: The service did not respond to the start or control request in a timely fashion
我使用以下代码开发了一个简单的 windows 服务。
当我启动服务时,大约需要 20 秒,服务没有启动,我收到标题中提到的错误消息。
注意:它在事件日志中记录 "Starting...",但之后的代码似乎没有 运行。请指教
Dim eventId As Integer = 0
Private Sub OnTimer(sender As Object, e As Timers.ElapsedEventArgs)
EventLog.WriteEntry("Monitoring the System", EventLogEntryType.Information, eventId)
eventId = eventId + 1
End Sub
Protected Overrides Sub OnStart(ByVal CmdArgs() As String)
EventLog.WriteEntry("Starting...") ' this line executes
Dim timer As System.Timers.Timer = New System.Timers.Timer()
timer.Interval = 60000 ' 60 seconds
AddHandler timer.Elapsed, AddressOf Me.OnTimer
timer.Start()
Return
''''' some unused code below as I have Return
End Sub
Windows 为 OnStart
方法向 return 提供最多约 30 秒的服务。如果没有在这段时间内,Windows 假设服务没有正确启动并给你错误。
您的 OnStart
方法永远不会 return,因为您在其中有一个无限循环。您需要做的是在 OnStart
方法中创建新线程,启动它,然后 return。新线程应该执行您希望服务实际执行的任何工作。
在对 SO 进行更多研究后,我发现问题出在我使用的是调试版本!!!
See the post
我使用以下代码开发了一个简单的 windows 服务。 当我启动服务时,大约需要 20 秒,服务没有启动,我收到标题中提到的错误消息。
注意:它在事件日志中记录 "Starting...",但之后的代码似乎没有 运行。请指教
Dim eventId As Integer = 0
Private Sub OnTimer(sender As Object, e As Timers.ElapsedEventArgs)
EventLog.WriteEntry("Monitoring the System", EventLogEntryType.Information, eventId)
eventId = eventId + 1
End Sub
Protected Overrides Sub OnStart(ByVal CmdArgs() As String)
EventLog.WriteEntry("Starting...") ' this line executes
Dim timer As System.Timers.Timer = New System.Timers.Timer()
timer.Interval = 60000 ' 60 seconds
AddHandler timer.Elapsed, AddressOf Me.OnTimer
timer.Start()
Return
''''' some unused code below as I have Return
End Sub
Windows 为 OnStart
方法向 return 提供最多约 30 秒的服务。如果没有在这段时间内,Windows 假设服务没有正确启动并给你错误。
您的 OnStart
方法永远不会 return,因为您在其中有一个无限循环。您需要做的是在 OnStart
方法中创建新线程,启动它,然后 return。新线程应该执行您希望服务实际执行的任何工作。
在对 SO 进行更多研究后,我发现问题出在我使用的是调试版本!!! See the post