Are you doing too much work in the OnStart method?
Have you tried debugging your service:
http://msdn.microsoft.com/library/d.../vsdebug/html/vxtskdebugginwindowsservice.asp
Specifically:
http://msdn.microsoft.com/library/d...on/html/vbtskdebuggingserviceapplications.asp
Normally what I do is include a healthy amount of event log messages (via
theServiceBase.EventLog property ) especially in any asynchronous events
that may be raised within the service. Plus I will include Debug.Write &
Trace.Write in strategic locations.
Something like:
Public Class MyService
Inherits System.ServiceProcess.ServiceBase
Private WithEvents Timer1 As System.Timers.Timer
Public Sub New()
MyBase.New()
' This call is required by the Component Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call
AddHandler AppDomain.CurrentDomain.UnhandledException, _
AddressOf AppDomain_UnhandledException
End Sub
Protected Overrides Sub OnStart(ByVal args() As String)
' Add code here to start your service. This method should set things
' in motion so your service can do its work.
Timer1.Start()
End Sub
Protected Overrides Sub OnStop()
' Add code here to perform any tear-down necessary to stop your
service.
Timer1.Stop()
End Sub
Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As
System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
Try
EventLog.WriteEntry("Timer elapsed handler started",
EventLogEntryType.Information)
' Do work here
EventLog.WriteEntry("Timer elapsed handler finished",
EventLogEntryType.Information)
Catch ex As Exception
EventLog.WriteEntry(ex.ToString(), EventLogEntryType.Error)
End Try
End Sub
Private Sub AppDomain_UnhandledException(ByVal sender As Object, _
ByVal e As UnhandledExceptionEventArgs)
EventLog.WriteEntry(e.ExceptionObject.ToString(),
EventLogEntryType.Error)
End Sub
End Class
Note EventLog is inherited from ServiceBase and will be the normal event log
for your service, you can override ServiceBase.EventLog if you want to use a
different Event log.
I configure Debug & Trace to go to a log file.
In your app.config of your Windows Service project:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener"
initializeData="MyService.log" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
Note the UnhandledException event is not working as I expected in the above,
so I put the Elapsed event in its own Try/Catch.
Hope this helps
Jay