Problema con servicio de Windows hecho en VB.NET
Hice un servicio de Windows que es un conversor de archivos pero cuando lo ejecuto me tira el siguiente error: No se puede iniciar el servicio ... En equipo local. Error 1053: El servicio no ha respondido a la petición o inicio del control en un tiempo adecuado.
La verdad que no sé cómo solucionar este problema!
Te adjunto el código para que puedas ayudarme...!
Besos
Option Explicit On
Imports clsAPP_CAM
Imports System. Drawing
Imports System. IO
Imports System
Imports System. Data
Imports System. Threading
Imports System. Collections
Public Class PruebaSW
Inherits System.ServiceProcess.ServiceBase
#Region " Código generado por el Diseñador de componentes "
Public Sub New()
MyBase. New()
' El Diseñador de componentes requiere esta llamada.
InitializeComponent()
' Agregar cualquier inicialización después de la llamada a InitializeComponent()
'CanStop = True ' este valor es el que tiene por defecto
CanPauseAndContinue = True
End Sub
'UserService reemplaza a Dispose para limpiar la lista de componentes.
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
' El punto de entrada principal para el proceso
_
Shared Sub Main()
Dim ServicesToRun() As System.ServiceProcess.ServiceBase
' Se puede ejecutar en el mismo proceso más de un servicio NT. Para agregar
' otro servicio a este proceso, cambie la siguiente línea a fin de
' crear otro objeto de servicio. Por ejemplo,
'
' ServicesToRun = New System.ServiceProcess.ServiceBase () {New Service1, New MySecondUserService}
'
ServicesToRun = New System.ServiceProcess.ServiceBase() {New PruebaSW()}
System.ServiceProcess.ServiceBase.Run(ServicesToRun)
End Sub
'Requerido por el Diseñador de componentes
Private components As System.ComponentModel.IContainer
'NOTA: el Diseñador de componentes requiere el siguiente procedimiento
'Se puede modificar utilizando el Diseñador de componentes. No lo modifique
' con el editor de código.
Private Sub InitializeComponent()
components = New System.ComponentModel.Container()
Me.ServiceName = "PruebaSW"
End Sub
#End Region
Private INTERNAL_LOOPS As Long
Private IMG_FOLDER_TMP As String
Private IMG_FOLDER As String
Private PNG_ITERATIONS As Long
Private MAIN_LOOP_MIN_SEG As Long
Private XML_REFRESH_ITERATIONS As Long
Private XML_AVAILABLE_CAMERAS As String
Private htCameras As Hashtable
Private clCameras As clCam
Private clParameters As clParam
Private clCamReader As New clCam
Private clAvCam As clConversor
Private Active As Boolean = True
Protected Function LoadCameras() As Hashtable
Dim CamFile As String = "C:\01wproX.jst"
clCameras = New clCam
clCameras.CamFile = CamFile
LoadCameras = clCameras.LoadHashCameras
clCameras = Nothing
End Function
Protected Function LoadAvailableCameraLastIndex(ByVal CameraName As String) As Long
clAvCam = New clConversor
clAvCam.Filename = IMG_FOLDER + "\available_cams.xml"
clAvCam.CameraName = CameraName
clAvCam.LoadAvailableCamera()
LoadAvailableCameraLastIndex = CLng(clAvCam.Index)
clAvCam = Nothing
End Function
Protected Sub LoadParameters()
Dim ParamFile As String = "C:\02wproY.jst"
Dim htParameters As New Hashtable
clParameters = New clParam
clParameters.ParamFile = ParamFile
htParameters = clParameters.LoadParameters()
INTERNAL_LOOPS = Convert.ToInt32(clParameters.ReadParameter(htParameters, "internal_loops"))
IMG_FOLDER_TMP = clParameters.ReadParameter(htParameters, "img_folder_tmp")
IMG_FOLDER = clParameters.ReadParameter(htParameters, "img_folder")
PNG_ITERATIONS = Convert.ToInt16(clParameters.ReadParameter(htParameters, "png_iterations"))
MAIN_LOOP_MIN_SEG = Convert.ToInt16(clParameters.ReadParameter(htParameters, "main_loop_min_seg"))
XML_REFRESH_ITERATIONS = Convert.ToInt16(clParameters.ReadParameter(htParameters, "xml_refresh_iterations"))
XML_AVAILABLE_CAMERAS = IMG_FOLDER + "\" + "available_cams.xml"
clParameters = Nothing
End Sub
Private Function IncrementIndex(ByVal IndexNumber As Long) As Long
If IndexNumber > 0 And IndexNumber = XML_REFRESH_ITERATIONS Then
LoadParameters()
htCameras = LoadCameras()
k = 1
End If
'Registro inicio de proceso
dBeginProcess = Now
'Recorre cada cámara
For Each deCamera In htCameras 'Ciclo cámaras
'Almaceno el nombre de la cámara y de archivo
sCameraFileName = deCamera.Value.ToString()
sCameraName = deCamera.Key.ToString()
'Almaceno ruta y nombre de archivo JPG
sCameraJPG = IMG_FOLDER + "\" + sCameraFileName + ".JPG"
sCameraPNG = IMG_FOLDER_TMP + "\" + sCameraFileName
sCameraJPG_TMP = IMG_FOLDER_TMP + "\" + sCameraFileName + ".JPG"
i = 1
While i <= INTERNAL_LOOPS
'Comprueba la existencia del archivo JPG y que no esté bloqueado
If File.Exists(sCameraJPG) = True And clConv.IsLockedFile(sCameraJPG) = False Then
'Traigo el índice de la cámara. Incremento dicho índice y creo nuevo nombre PNG de archivo
clAvCam = New clConversor
clAvCam.CameraName = sCameraName
clAvCam.AvaiableFile = XML_AVAILABLE_CAMERAS
clAvCam.LoadAvailableCamera()
lNewIndex = IncrementIndex(CLng(clAvCam.Index))
sNewPNGName = sCameraFileName + "_" + lNewIndex.ToString() + ".PNG"
clAvCam = Nothing
'Grabo nuevo índice y nombre PNG de archivo
clAvCam = New clConversor
clAvCam.CameraName = sCameraName
clAvCam.AvaiableFile = XML_AVAILABLE_CAMERAS
clAvCam.Index = lNewIndex.ToString
clAvCam.Filename = sNewPNGName
clAvCam.UpdateAvailableCamera()
clAvCam = Nothing
'Bloqueo el archivo para que no lo pise
fsJPGCameraFile = New FileStream(sCameraJPG, FileMode.Open, FileAccess.ReadWrite,...
La verdad que no sé cómo solucionar este problema!
Te adjunto el código para que puedas ayudarme...!
Besos
Option Explicit On
Imports clsAPP_CAM
Imports System. Drawing
Imports System. IO
Imports System
Imports System. Data
Imports System. Threading
Imports System. Collections
Public Class PruebaSW
Inherits System.ServiceProcess.ServiceBase
#Region " Código generado por el Diseñador de componentes "
Public Sub New()
MyBase. New()
' El Diseñador de componentes requiere esta llamada.
InitializeComponent()
' Agregar cualquier inicialización después de la llamada a InitializeComponent()
'CanStop = True ' este valor es el que tiene por defecto
CanPauseAndContinue = True
End Sub
'UserService reemplaza a Dispose para limpiar la lista de componentes.
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
' El punto de entrada principal para el proceso
_
Shared Sub Main()
Dim ServicesToRun() As System.ServiceProcess.ServiceBase
' Se puede ejecutar en el mismo proceso más de un servicio NT. Para agregar
' otro servicio a este proceso, cambie la siguiente línea a fin de
' crear otro objeto de servicio. Por ejemplo,
'
' ServicesToRun = New System.ServiceProcess.ServiceBase () {New Service1, New MySecondUserService}
'
ServicesToRun = New System.ServiceProcess.ServiceBase() {New PruebaSW()}
System.ServiceProcess.ServiceBase.Run(ServicesToRun)
End Sub
'Requerido por el Diseñador de componentes
Private components As System.ComponentModel.IContainer
'NOTA: el Diseñador de componentes requiere el siguiente procedimiento
'Se puede modificar utilizando el Diseñador de componentes. No lo modifique
' con el editor de código.
Private Sub InitializeComponent()
components = New System.ComponentModel.Container()
Me.ServiceName = "PruebaSW"
End Sub
#End Region
Private INTERNAL_LOOPS As Long
Private IMG_FOLDER_TMP As String
Private IMG_FOLDER As String
Private PNG_ITERATIONS As Long
Private MAIN_LOOP_MIN_SEG As Long
Private XML_REFRESH_ITERATIONS As Long
Private XML_AVAILABLE_CAMERAS As String
Private htCameras As Hashtable
Private clCameras As clCam
Private clParameters As clParam
Private clCamReader As New clCam
Private clAvCam As clConversor
Private Active As Boolean = True
Protected Function LoadCameras() As Hashtable
Dim CamFile As String = "C:\01wproX.jst"
clCameras = New clCam
clCameras.CamFile = CamFile
LoadCameras = clCameras.LoadHashCameras
clCameras = Nothing
End Function
Protected Function LoadAvailableCameraLastIndex(ByVal CameraName As String) As Long
clAvCam = New clConversor
clAvCam.Filename = IMG_FOLDER + "\available_cams.xml"
clAvCam.CameraName = CameraName
clAvCam.LoadAvailableCamera()
LoadAvailableCameraLastIndex = CLng(clAvCam.Index)
clAvCam = Nothing
End Function
Protected Sub LoadParameters()
Dim ParamFile As String = "C:\02wproY.jst"
Dim htParameters As New Hashtable
clParameters = New clParam
clParameters.ParamFile = ParamFile
htParameters = clParameters.LoadParameters()
INTERNAL_LOOPS = Convert.ToInt32(clParameters.ReadParameter(htParameters, "internal_loops"))
IMG_FOLDER_TMP = clParameters.ReadParameter(htParameters, "img_folder_tmp")
IMG_FOLDER = clParameters.ReadParameter(htParameters, "img_folder")
PNG_ITERATIONS = Convert.ToInt16(clParameters.ReadParameter(htParameters, "png_iterations"))
MAIN_LOOP_MIN_SEG = Convert.ToInt16(clParameters.ReadParameter(htParameters, "main_loop_min_seg"))
XML_REFRESH_ITERATIONS = Convert.ToInt16(clParameters.ReadParameter(htParameters, "xml_refresh_iterations"))
XML_AVAILABLE_CAMERAS = IMG_FOLDER + "\" + "available_cams.xml"
clParameters = Nothing
End Sub
Private Function IncrementIndex(ByVal IndexNumber As Long) As Long
If IndexNumber > 0 And IndexNumber = XML_REFRESH_ITERATIONS Then
LoadParameters()
htCameras = LoadCameras()
k = 1
End If
'Registro inicio de proceso
dBeginProcess = Now
'Recorre cada cámara
For Each deCamera In htCameras 'Ciclo cámaras
'Almaceno el nombre de la cámara y de archivo
sCameraFileName = deCamera.Value.ToString()
sCameraName = deCamera.Key.ToString()
'Almaceno ruta y nombre de archivo JPG
sCameraJPG = IMG_FOLDER + "\" + sCameraFileName + ".JPG"
sCameraPNG = IMG_FOLDER_TMP + "\" + sCameraFileName
sCameraJPG_TMP = IMG_FOLDER_TMP + "\" + sCameraFileName + ".JPG"
i = 1
While i <= INTERNAL_LOOPS
'Comprueba la existencia del archivo JPG y que no esté bloqueado
If File.Exists(sCameraJPG) = True And clConv.IsLockedFile(sCameraJPG) = False Then
'Traigo el índice de la cámara. Incremento dicho índice y creo nuevo nombre PNG de archivo
clAvCam = New clConversor
clAvCam.CameraName = sCameraName
clAvCam.AvaiableFile = XML_AVAILABLE_CAMERAS
clAvCam.LoadAvailableCamera()
lNewIndex = IncrementIndex(CLng(clAvCam.Index))
sNewPNGName = sCameraFileName + "_" + lNewIndex.ToString() + ".PNG"
clAvCam = Nothing
'Grabo nuevo índice y nombre PNG de archivo
clAvCam = New clConversor
clAvCam.CameraName = sCameraName
clAvCam.AvaiableFile = XML_AVAILABLE_CAMERAS
clAvCam.Index = lNewIndex.ToString
clAvCam.Filename = sNewPNGName
clAvCam.UpdateAvailableCamera()
clAvCam = Nothing
'Bloqueo el archivo para que no lo pise
fsJPGCameraFile = New FileStream(sCameraJPG, FileMode.Open, FileAccess.ReadWrite,...
Respuesta de Luis Angel Octavio Alcaraz Barajas
1
2 respuestas más de otros expertos
Respuesta de fabian1981
1
Respuesta de Roberto Alvarado
1