Frage

Ich habe eine C # -Anwendung, die eine nicht verwaltete C ++ Applikation über Process.Start ()

ruft

Auf einigen Maschinen wenn diese C ++ app bricht, ich bin links mit dem Just-In-Time-Fehlerdialog zeigt

Gibt es eine Möglichkeit von C # zu erkennen, dass die C ++ App errored hat und es nur neu starten

(ich habe nicht die Quelle und daher nicht den App ++ C ändern kann)

War es hilfreich?

Lösung

Der JIT-Debugger-Dialog zeigt, weil die C ++ app in irgendeiner Weise abgestürzt. Während der Dialog geöffnet ist, wird der Prozess noch vorhanden ist (aber suspendiert), was bedeutet, dass der Prozess-Klasse wird es nicht berücksichtigen müssen „verlassen“, bis der JIT Dialog abgewiesen oder ein angeschlossenes Debugger endet der Prozess.

Sie können entweder deaktivieren JIT-Debuggen auf den Maschinen das Problem auftritt (I denken , dass die Debug-Manager-Dienst zu deaktivieren JIT-Debuggen deaktivieren kann), die App ermöglicht abstürzen und sterben (und damit Bericht als „verlassen“), oder (und ich habe keine Ahnung, wie man über das tun dies gehen würde) sehen, wenn Sie Ihren Host C # app befestigen sich als Debugger für die C ++ app machen können und die Benachrichtigung des Absturzes vom C erhalten ++ app, beenden, und dann wirken sich auf die Informationen, die sie beendet ist.

Andere Tipps

Wenn die C ++ ist eine Konsole Sie zwei Dinge überprüfen,

  1. Der Exit-Wert, häufig 0 bedeutet normalerweise geschlossen sonst ist Problem (aber ich denke, das hängt von der Konvention dieser Anwendungen entwickeln verwendet)

  2. Der Standardfehler Überprüfen Sie, ob es leer ist, so ist alles in Ordnung,

    mit (Process p = new Process ())    {

     p.StartInfo.UseShellExecute = false;
     p.StartInfo.RedirectStandardError = true;
     p.StartInfo.FileName = "any.exe";
     p.Start();
     string error = p.StandardError.ReadToEnd();
     p.WaitForExit()
     if(error.Length == 0 && p.ExitCode == 0)
     {
     }
    }
    
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top