2016-08-19 5 views
2

Écrire un morceau de code qui ouvre un autre processus.Comment faire pour attraper l'exception d'exécution d'un autre processus dans C#?

public void StartProcess() 
{ 
    Process p = Process.Start("Process1"); 
    p.WaitForInputIdle(); 
    SetParent(p.MainWindowHandle, this.Handle); 
    IntPtr h = p.MainWindowHandle; 
} 

Ceci va démarrer le processus 1. Existe-t-il un moyen d'intercepter les exceptions d'exécution dans Process1?

Il s'agit d'une question différente du code affiché here car elle vous indique comment intercepter une exception d'exécution dans un assembly .net exécutable. L'application que j'ouvre est construite en utilisant Delphi et je n'ai pas le code source

+0

@giladgreen Ce n'est pas un doublon comme le code que vous avez montré [ici] (http://stackoverflow.com/questions/2279181/catch-another-process-unhandled-exception) vous indique comment attraper une exception d'exécution à un assemblage .net exectuable. L'application que j'ouvre est construite en utilisant Delphi et je n'ai pas le code source –

Répondre

1

Le processus doit attraper l'exception elle-même. Vous pouvez ensuite envoyer des rapports d'erreurs via un modèle d'observateur.

+0

Process1 est une application tierce. Cela commence juste le processus. Je ne comprends pas ce que vous entendez par ** processus doit attraper l'exception elle-même **. –

+0

Je veux dire que vous pouvez lire le résultat et suivre la sortie standard d'une autre application, mais vous ne pouvez pas vraiment gérer les exceptions. L'application doit coopérer avec vous à ce sujet. Sinon, vous obtiendrez le résultat, mais ne savez jamais vraiment ce qui se passe à l'intérieur. –

+0

problème est que je n'ai pas le code source de l'application. existe-t-il un moyen d'intercepter toute exception qui se produit dans une application –