practice - catch exception error c#
Manejar la excepción al inicio del servicio (3)
Si lo principal que desea es que la ventana Servicios informe que hubo un error, por lo que he intentado (.net 3.5 en Windows 7), la única manera de hacerlo es mediante la configuración de ExitCode. Recomiendo configurarlo en 13816, ya que esto da como resultado el mensaje "Se ha producido un error desconocido". Vea los códigos de error de Windows .
El ejemplo siguiente logra tres cosas. 1 - la configuración de ExitCode da como resultado un mensaje útil para el usuario final. No afecta el registro de la aplicación de Windows, pero sí incluye un mensaje en el registro del sistema. 2 - Calling Stop da como resultado un mensaje "Service successfully stopped" en el registro de la aplicación. 3 - lanzar los resultados de la excepción en una entrada de registro útil en el registro de la aplicación.
protected override void OnStart(string[] args) {
try {
// Start your service
}
catch (Exception ex) {
// Log exception
this.ExitCode = 13816;
this.Stop();
throw;
}
}
Estoy escribiendo una serie de servicios de Windows. Quiero que fallen si se producen errores durante el inicio (en el método OnStart()
). Había asumido que simplemente lanzar un error en OnStart()
haría esto, pero descubrí que en su lugar "comienza" y me presenta un mensaje que dice "El servicio ha comenzado, pero está inactivo. ¿Es correcto?" (Paráfrasis). ¿Cómo manejo el error por lo que realmente no puede iniciar el servicio?
Mueva toda su lógica de inicio a un método diferente y genere excepciones (o llame a OnStop) desde ese método separado.
OnStart tiene algunas rarezas cuando se inicia. He descubierto que si OnStart () no tiene más de una línea, entonces no aparece el mensaje "El servicio se inició y luego se detuvo. Algunos servicios se detienen automáticamente si no tienen trabajo pendiente", y las excepciones arrojadas terminarán. procesar y registrarse en el registro de eventos de la aplicación.
También con el método de inicio independiente, puede utilizar una técnica como esta para depurarla sin adjuntarla. http://www.codeproject.com/KB/dotnet/DebugWinServices.aspx
si está ejecutando .NET 2.0 o superior, puede usar ServiceBase. Stop para detener el servicio desde OnStart. De lo contrario, llame a Stop desde un nuevo hilo.
ref [devnewsgroups] ( http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework/topic50404.aspx )
(grupo de noticias ido)