2010-04-08 6 views
0

J'ai une application WPF et un service Windows comme chien de garde.Comment vérifier que l'application est interrompue ou fonctionne à partir d'un service de fenêtre

Je veux vérifier si mon application de fenêtre est interrompue ou fonctionne correctement. Si c'est le cas, je veux redémarrer l'application.

Je vois la propriété Process.responding mais elle ne fonctionne pas dans mon service.

Toute idée ou autre solution.

Process[] myProcesses; 
     myProcesses = Process.GetProcessesByName(ApplicationName); 
     if (myProcesses.Length > 0) 
     { 
      foreach (Process proc in myProcesses) 
      { 
       _Logger.LogMessage("Check responding"); 
       if (!proc.Responding) 

Répondre

0

En général, vous ne pouvez pas détecter si un programme s'est arrêté (consultez "Le problème d'arrêt").

Si vous avez une définition technique spécifique de "halt" pour votre cas, c'est peut-être possible, mais les détails sont tout. Supposons qu'une interface graphique attende une requête réseau, elle arrête de traiter l'entrée ... mais lorsque la requête est terminée, elle commence à répondre. Dans ce cas, il a été arrêté par une définition, mais pas dans d'autres sens.

+0

J'ai une idée pour donner assez de temps possible à l'application pour répondre. Par exemple, je donne une nouvelle tentative pour vérifier l'état de réponse pendant 4 minutes et si elle ne répond toujours pas, je veux le redémarrer. – malik