2009-06-26 9 views
1

ich eine C# app haben, die eine nicht verwaltete C++ Applikation über Process.Start() mit dem Just-Wie eine nicht verwaltete App zu erkennen, wurde abgebrochen

Auf einigen Maschinen wenn diese C++ app bricht, ich bin links ruft gibt es eine Möglichkeit von C# in-Time-Dialog Fehler

zeigt zu erkennen, dass die C++ App errored hat, und starten sie es einfach

(ich habe nicht die Quelle müssen und deshalb nicht die C ändern ++ app)

+0

Ist die Anwendungskonsole oder hat sie eine GUI? – CiscoIPPhone

Antwort

1

Der JIT-Debugger-Dialog wird angezeigt, weil die C++ App in irgendeiner Weise abgestürzt ist. Während der Dialog geöffnet ist, ist der Prozess immer noch vorhanden (aber ausgesetzt), was bedeutet, dass die Process-Klasse nicht davon ausgeht, dass sie "beendet" hat, bis der JIT-Dialog beendet wird oder ein angehängter Debugger den Prozess beendet.

Sie könnten entweder deaktivieren JIT-Debuggen auf den Maschinen das Problem auftritt (I denken, dass die Debug-Manager-Dienst zu deaktivieren kann JIT-Debuggen deaktivieren), die App ermöglicht abstürzen und sterben (und daher Bericht als „verlassen "), oder (und ich habe keine Ahnung, wie du das machen würdest), wenn du deine Host-C# -App als Debugger für die C++ - App anhängen und Benachrichtigungen über den Absturz von der C++ - App erhalten kannst, beende sie und dann nach den Informationen handeln, die es beendet hat.

0

Wenn das C++ eine Konsole ist, können Sie zwei Dinge überprüfen,

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

  2. der Standardfehler Überprüfen Sie, ob es leer ist, so ist alles ok

    verwenden (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) 
    { 
    } 
    } 
    
Verwandte Themen