T
tshad
I created a service in VS 2003 and the code works fine as an application,
but not as a service.
It installs fine, but when I try to start it, it tells me it was unable to
start.
Am I missing something here?
Here is the program.
*************************************************
Imports System
Imports System.Diagnostics
Imports System.ComponentModel
Imports System.Data.SqlClient
Imports System.Web.Mail
Imports System.ServiceProcess
Public Class Service1
Inherits System.ServiceProcess.ServiceBase
#Region " Component Designer generated code "
Public Sub New()
MyBase.New()
' This call is required by the Component Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call
End Sub
'UserService overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
' The main entry point for the process
<MTAThread()> _
Shared Sub Main()
Dim ServicesToRun() As System.ServiceProcess.ServiceBase
' More than one NT Service may run within the same process. To add
' another service to this process, change the following line to
' create a second service object. For example,
'
' ServicesToRun = New System.ServiceProcess.ServiceBase () {New
Service1, New MySecondUserService}
'
ServicesToRun = New System.ServiceProcess.ServiceBase () {New
Service1}
System.ServiceProcess.ServiceBase.Run(ServicesToRun)
End Sub
'Required by the Component Designer
Private components As System.ComponentModel.IContainer
' NOTE: The following procedure is required by the Component Designer
' It can be modified using the Component Designer.
' Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
components = New System.ComponentModel.Container()
Me.ServiceName = "Service1"
End Sub
#End Region
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.
Call RunIt()
End Sub
Protected Overrides Sub OnStop()
' Add code here to perform any tear-down necessary to stop your
service.
End Sub
Public Sub RunIt()
While (2 > 1)
tmrProcCheck()
System.Threading.Thread.Sleep(60000) '1 minute, time is in
milliseconds
End While
End Sub
Private Sub tmrProcCheck()
Dim errors As Boolean = False
Dim errorMessage As String
Dim theProcess() As Process
theProcess = Process.GetProcessesByName("cmd")
If theProcess.Length = 0 Then
Process.Start("notepad.exe")
End If
End Sub
End Class
**************************************************************************************
The code I wrote was (without the code MS added):
******************************************************************************
Imports System
Imports System.Diagnostics
Imports System.ComponentModel
Imports System.Data.SqlClient
Imports System.Web.Mail
Imports System.ServiceProcess
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.
Call RunIt()
End Sub
Protected Overrides Sub OnStop()
' Add code here to perform any tear-down necessary to stop your
service.
End Sub
Public Sub RunIt()
While (2 > 1)
tmrProcCheck()
System.Threading.Thread.Sleep(60000) '10 minutes, time is in
milliseconds
End While
End Sub
Private Sub tmrProcCheck()
Dim errors As Boolean = False
Dim errorMessage As String
Dim theProcess() As Process
theProcess = Process.GetProcessesByName("cmd")
If theProcess.Length = 0 Then
Process.Start("notepad.exe")
End If
End Sub
End Class
************************************************************************************
but not as a service.
It installs fine, but when I try to start it, it tells me it was unable to
start.
Am I missing something here?
Here is the program.
*************************************************
Imports System
Imports System.Diagnostics
Imports System.ComponentModel
Imports System.Data.SqlClient
Imports System.Web.Mail
Imports System.ServiceProcess
Public Class Service1
Inherits System.ServiceProcess.ServiceBase
#Region " Component Designer generated code "
Public Sub New()
MyBase.New()
' This call is required by the Component Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call
End Sub
'UserService overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
' The main entry point for the process
<MTAThread()> _
Shared Sub Main()
Dim ServicesToRun() As System.ServiceProcess.ServiceBase
' More than one NT Service may run within the same process. To add
' another service to this process, change the following line to
' create a second service object. For example,
'
' ServicesToRun = New System.ServiceProcess.ServiceBase () {New
Service1, New MySecondUserService}
'
ServicesToRun = New System.ServiceProcess.ServiceBase () {New
Service1}
System.ServiceProcess.ServiceBase.Run(ServicesToRun)
End Sub
'Required by the Component Designer
Private components As System.ComponentModel.IContainer
' NOTE: The following procedure is required by the Component Designer
' It can be modified using the Component Designer.
' Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
components = New System.ComponentModel.Container()
Me.ServiceName = "Service1"
End Sub
#End Region
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.
Call RunIt()
End Sub
Protected Overrides Sub OnStop()
' Add code here to perform any tear-down necessary to stop your
service.
End Sub
Public Sub RunIt()
While (2 > 1)
tmrProcCheck()
System.Threading.Thread.Sleep(60000) '1 minute, time is in
milliseconds
End While
End Sub
Private Sub tmrProcCheck()
Dim errors As Boolean = False
Dim errorMessage As String
Dim theProcess() As Process
theProcess = Process.GetProcessesByName("cmd")
If theProcess.Length = 0 Then
Process.Start("notepad.exe")
End If
End Sub
End Class
**************************************************************************************
The code I wrote was (without the code MS added):
******************************************************************************
Imports System
Imports System.Diagnostics
Imports System.ComponentModel
Imports System.Data.SqlClient
Imports System.Web.Mail
Imports System.ServiceProcess
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.
Call RunIt()
End Sub
Protected Overrides Sub OnStop()
' Add code here to perform any tear-down necessary to stop your
service.
End Sub
Public Sub RunIt()
While (2 > 1)
tmrProcCheck()
System.Threading.Thread.Sleep(60000) '10 minutes, time is in
milliseconds
End While
End Sub
Private Sub tmrProcCheck()
Dim errors As Boolean = False
Dim errorMessage As String
Dim theProcess() As Process
theProcess = Process.GetProcessesByName("cmd")
If theProcess.Length = 0 Then
Process.Start("notepad.exe")
End If
End Sub
End Class
************************************************************************************