2011-02-16 13 views
7

Tengo un proceso .Net que funciona las 24 horas, los 7 días de la semana, que se bloquea una o dos veces por semana. Tengo el evento AppDomain.CurrentDomain.UnhandledException conectado a log4net y el evento nunca se dispara! ¡El proceso simplemente falla al registrar cualquier cosa! Esto se ve como un error de .NET runtime/CLR ya que acabo de recibir un mensaje en el registro de eventos que dice ".NET Runtime 2.0 Error"..NET Runtime Error hace que el proceso se bloquee. Pero no hay una excepción no controlada: ¿por qué? ¿Error CLR?

Estoy ejecutando .Net 3.0 Sp1.

¿Alguno puede ayudarme a resolver cómo solucionarlo?

Evento mensaje de registro: .NET Runtime 2.0 Error Tipo: error Evento Id: 1000

Descripción del Evento de registro: Aplicación con errores appname.exe, versión 0.0.0.0, 4ca5d33d sello, errores Módulo mscorwks.dll , versión 2.0.50727.3607, sello 4add5446, depuración? 0, dirección de falla 0x0010724e.

+0

es que la medida del mensaje? Por lo general, hay información como "Aplicación de error foo.exe ...." – jason

+0

.NET 3.0 y.NET 3.5 están ejecutando .NET 2.0, solo FYI –

+1

. Dudo que sea el CLR. Es más probable que algún fragmento de código falle. ¿Puedes publicar los detalles del registro de eventos? – Falcon

Respuesta

3

Creo que una StackOverflowException no se detectaría así, ya que no hay ningún lugar para que se ejecute el código. Posiblemente, este sea un buen candidato para algo que ocurra de forma razonablemente regular; es posible que deba verificar a través de su código los bucles/recursiones infinitos.

0

Trate de realizar un intento global // capture en el punto de entrada de su aplicación.

Espero que ayude.

Aquí se está hablando de este error: http://social.msdn.microsoft.com/Forums/en/clr/thread/2d10da32-3f57-4f9b-a509-e9864fc5bd16

+0

que no funcionará si la aplicación tiene varios hilos –

+3

buenos consejos si la aplicación es de un solo hilo. desafortunadamente, las excepciones no controladas lanzadas fuera de subproceso (por subprocesos hijo errantes en una aplicación de subprocesos múltiples) no se detectarán, lo que generalmente da como resultado la finalización del programa. –

1

Por lo tanto, algunos comentarios interesantes, pero también vale la pena mencionar que diferentes tipos de aplicaciones pueden arrojar excepciones en diferentes controladores de eventos.

Para un servicio de Windows, que debe haber una manipulación segura

static void Main (string[] args) 
{ 
    AppDomain.CurrentDomain.UnhandledException += 
     CurrentDomain_UnhandledException; 
} 

Para una aplicación de Windows Forms, también hay que manejar el controlador de eventos no controlada adicional

static void Main (string[] args) 
{ 
    AppDomain.CurrentDomain.UnhandledException += 
     CurrentDomain_UnhandledException; 
    System.Windows.Forms.Application.ThreadException += 
     Application_ThreadException; 
} 

Para una aplicación de WPF, un despachador de eventos se proporciona para las excepciones GUI

static void Main (string[] args) 
{ 
    AppDomain.CurrentDomain.UnhandledException += 
     CurrentDomain_UnhandledException; 
    Application.Current.DispatcherUnhandledException += 
     Application_DispatcherException; 
} 

También vale la pena reiterar , cualquier excepción no controlada de normalmente da como resultado la finalización del programa. Sin embargo, manejar estos eventos nos da la oportunidad de informar e identificar el error de raíz.

enlaces adicionales que pueden ayudar

My question regarding unhandled GUI exceptions (duplicate)

WPF global exception handler

Cuestiones relacionadas