Bonjour,
Je rencontre actuellement un gros soucis avec l'utilisation des processus.
J'ai besoin de lancer une programme tiers et d'afficher le retour de ce programme au fil de l’exécution. Cependant je n'arrive pas à détecter la fin du processus.
Si je laisse WaitForExit, l'évènement Exited n'est jamais appelé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 using (ProcessPublication = new System.Diagnostics.Process()) { ProcessPublication.StartInfo.FileName = "cmd"; ProcessPublication.StartInfo.CreateNoWindow = true; ProcessPublication.StartInfo.UseShellExecute = false; ProcessPublication.StartInfo.RedirectStandardInput = true; ProcessPublication.StartInfo.RedirectStandardError = true; ProcessPublication.StartInfo.RedirectStandardOutput = true; ProcessPublication.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(ProcessPublication_OutputDataReceived); ProcessPublication.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(ProcessPublication_OutputDataReceived); ProcessPublication.EnableRaisingEvents = true; ProcessPublication.Exited += delegate(object o, EventArgs p) { Console.WriteLine("End of process"); }; if (ProcessPublication.Start()) { ProcessPublication.BeginOutputReadLine(); ProcessPublication.BeginErrorReadLine(); ProcessPublication.StandardInput.WriteLine(@"cd C:\test"); ProcessPublication.StandardInput.WriteLine("file.bat"); ProcessPublication.StandardInput.Close(); //ProcessPublication.WaitForExit(-1); } }
Si je rajoute WaitForExit, l'évènement est bien appelé par contre, je ne peux pas mettre l'IHM à jour, cela fige mon écran.
Comment puis je faire pour détecter la fin du processus?
Par avance merci.
Partager