Domanda

Da C# su una macchina Windows, c'è un modo per scoprire come è stato interrotto un processo?Ho dato un'occhiata a Processi class, sono riuscito a ottenere una bella richiamata amichevole dall'evento Exited una volta impostato EnableRaisingEvents = true; ma non sono riuscito a scoprire se il processo è stato ucciso o se è uscito naturalmente?

È stato utile?

Soluzione

Avvia Process Monitor (da Sysinternals, parte di Microsoft), esegui il processo e lascialo morire, quindi filtra i risultati di Process Monitor in base al nome del processo: sarai in grado di vedere tutto ciò che ha fatto, inclusi i codici di uscita.

Altri suggerimenti

A questo scopo è possibile utilizzare il codice di ritorno del processo.Se il tuo processo restituisce un valore diverso da zero dal suo metodo Main, puoi verificare se il processo è terminato da solo o meno (il valore restituito corrisponde).

Bella risposta Antoine, purtroppo non posso cambiare il codice di ritorno.Colpa mia: immagino di dover restringere l'ambito della domanda.

Realisticamente non penso nemmeno di aver bisogno di una soluzione programmatica - un'utilità andrebbe bene - ho dato un'occhiata all'aspetto impressionante Esplora processi ma questo non sembra darmi questi dettagli.

Il problema che ho è che il programma che desidero interrogare viene eseguito da un sistema di pianificazione, equivalente alle attività pianificate di Windows, ma non quello.Esiste un modo per rilevare se lo scheduler sta interrompendo forzatamente il programma?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top