2010-12-16 3 views
8

diciamo che ho un processo con l'ID 1234. Questo processo è in esecuzione prima dell'esecuzione dell'applicazione.Problema con il processo chiuso

ho questo codice:

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

Ora, quando ho compilare ed eseguire l'app, ottiene il processo e mostra il titolo della finestra principale. Tuttavia quando chiudo il processo 1234, l'app.Exited non fa fuoco ... perché è questo? E come avrei potuto farlo sparare?

risposta

17

Si prega di notare che il documentation afferma che EnableRaisingEvents deve essere impostato su true prima che questo evento si attivi.

+0

yahoo hai salvato il mio giorno! – TheVillageIdiot

3

Per impostazione predefinita, per motivi di prestazioni, la classe Processo non genera eventi. Se si desidera che l'oggetto Process guardi Exited e rilanci quell'evento, è necessario impostare la proprietà EnableRaisingEvents su true.

C'è un costo associato a che attesta l'uscita di un processo. Se EnableRaisingEvents è true, l'evento Exited viene generato quando termina il processo associato . Le procedure specificate per l'evento Exited eseguito in quel momento.

A volte, l'applicazione avvia un processo ma non è necessario che sia notificato della chiusura. Ad esempio, l'applicazione può avviare Blocco note a consentire all'utente di eseguire la modifica del testo , ma non utilizzare ulteriormente l'applicazione Blocco note . È possibile scegliere di non essere avvisato quando si chiude il processo , perché non è rilevante per l'operazione continua di l'applicazione. Impostazione EnableRaisingEvents su false salvate risorse di sistema.