2009-06-26 9 views
1

は、私は、Process.Start()いくつかのマシンで私はジャストで左だ、このC++アプリは中止した場合

を経由して管理されていないC++アプリケーションを呼び出すC#のアプリを持って中止されましたインタイム

を示すエラーダイアログがC++アプリは(私はソースを持っていないため、C++アプリケーションを変更することはできませんエラーが発生したとちょうどそれを

を再起動したことを検出するためのC#から方法はあります)

+0

アプリケーションはコンソールベースですか、それともGUIを備えていますか? – CiscoIPPhone

答えて

1

C++アプリケーションが何らかの方法でクラッシュしたため、JITデバッガーのダイアログが表示されます。ダイアログは開いていますが、プロセスはまだ存在しますが、中断されています。つまり、JITダイアログが終了するか、接続されたデバッガがプロセスを終了するまでプロセスクラスは「終了」しているとは考えません。

あなたはアプリがゆえ、クラッシュと死ぬ(とすることができ、問題が発生してマシン上で無効にJITデバッグ(私はマシンデバッグマネージャーサービスを無効にJITデバッグを無効にすることと思い)のいずれかの可能性があり、「出るとして報告")、または(あなたがこれをどうやってやるのか分かりません)ホストC#アプリケーションをC++アプリケーションのデバッガとしてアタッチし、C++アプリケーションからクラッシュ通知を受け取って終了させるかどうかを確認してください終了した情報に基づいて行動することができます。

0

C++がコンソールベースの場合、2つのことを確認できます

  1. 終了コードは、一般的に0手段は、そうでない場合は、通常は閉じ問題(私は、これは、このアプリケーションを開発するために使用される規則に依存考える)

  2. それが空の場合、標準エラーをチェックしているので、すべてがありますOK

    使用(プロセスP =新しいプロセス()){

    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) 
    { 
    } 
    } 
    
関連する問題