Bonjour à tous,
j'ai cette classe qui sert à exécuter des binaire et à rediriger leur sortie.
Ma question :
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 internal class Execute { #region Constructor public Execute(String BinariesFolder) { this.Binaries = BinariesFolder; } #endregion #region Fields private String Binaries = String.Empty; #endregion #region Events private EventHandler PrivateExitedHandler = null; public EventHandler ÉxitedHandler { set { PrivateExitedHandler = value; } } private DataReceivedEventHandler PrivateOutputHandler = null; public DataReceivedEventHandler OutputHandler { set { PrivateOutputHandler = value; } } private DataReceivedEventHandler PrivateErrorHandler; public DataReceivedEventHandler ErrorHandler { set { PrivateErrorHandler = value; } } #endregion public void ExecuteCommand(String Command, String Parametters) { String CommandPath = System.IO.Path.Combine(this.Binaries, Command + ".exe"); ProcessStartInfo ProcessInfos = new ProcessStartInfo(CommandPath, Parametters); ProcessInfos.RedirectStandardInput = true; ProcessInfos.RedirectStandardOutput = true; ProcessInfos.RedirectStandardError = true; ProcessInfos.UseShellExecute = false; ProcessInfos.CreateNoWindow = true; Process Processs = new Process(); Processs.StartInfo = ProcessInfos; try { Processs.Start(); Processs.EnableRaisingEvents = true; if (PrivateOutputHandler != null) Processs.OutputDataReceived += PrivateOutputHandler; if (PrivateErrorHandler != null) Processs.ErrorDataReceived += PrivateErrorHandler; if (PrivateExitedHandler != null) Processs.Exited += PrivateExitedHandler; Processs.BeginErrorReadLine(); Processs.BeginOutputReadLine(); } catch (Exception) { } } }
Comment être notifier de l'arrêt du Process, une fois que toutes la sortie à été envoyer...
car en fait les events sont envoyée ligne par ligne... et vu que l'exécutable s'éxécute rapidement ba j'ai la première ligne ensuite l'adret du processus puis les autre ligne de la sortie ...
Merci d'avance
Partager