2010-12-16 17 views
8

Digamos que tengo un proceso con la ID 1234. Este proceso se está ejecutando antes de que se ejecute mi aplicación.Problema con el proceso Salir

tengo este código:

 Process app = Process.GetProcessById(1234); 
     MessageBox.Show(app.MainWindowTitle); 
     app.Exited += this.methodShowsMessageBox; 

Ahora, cuando me compilar y ejecutar la aplicación, se hace el proceso y muestra el título de la ventana principal. Sin embargo, cuando cierro el proceso 1234, la aplicación no se enciende ... ¿por qué es esto? ¿Y cómo podría disparar?

Respuesta

17

Tenga en cuenta que el documentation indica que EnableRaisingEvents se debe establecer en true antes de que se active este evento.

+0

yahoo me salvaste el día! – TheVillageIdiot

3

De forma predeterminada, por razones de rendimiento, la clase Process no genera eventos. Si desea que el objeto Process observe Exited y plantee ese evento, debe establecer su propiedad EnableRaisingEvents en verdadero.

Hay un costo asociado con en busca de un proceso para salir. Si EnableRaisingEvents es verdadero, el evento Exited se genera cuando finaliza el proceso asociado . Los procedimientos que ha especificado para el evento Salir se ejecuta en ese momento.

A veces, su aplicación inicia un proceso pero no necesita ser notificada de su cierre. Por ejemplo, su aplicación puede iniciar el Bloc de notas al permitir al usuario realizar la edición de texto , pero no hacer más uso de la aplicación Bloc de notas. Puede elegir no ser notificado cuando el proceso finaliza, porque no es relevante para la operación continua de su aplicación. Configuración EnableRaisingEvents para guardar falsamente recursos del sistema.

Cuestiones relacionadas