Bonjour à tous,

j'ai cette classe qui sert à exécuter des binaire et à rediriger leur sortie.

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)
            {
 
            }
        }
    }
Ma question :
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