Reshefm avait une réponse plutôt bonne; cependant, elle ne tient pas compte d'une situation dans laquelle le processus n'a jamais été démarré pour commencer.
Voici une version modifiée de ce qu'il a posté.
public static bool IsRunning(this Process process)
{
try
{
Process.GetProcessById(process.Id).Dispose();
}
catch (Exception e) when (e is ArgumentException or InvalidOperationException)
{
return false;
}
return true;
}
J'ai supprimé son ArgumentNullException car elle est censée être une exception de référence nulle et elle est lancée par le système de toute façon, et j'ai aussi pris en compte la situation dans laquelle le processus n'a jamais été démarré à l'origine ou la méthode close() a été utilisée pour fermer le processus.