Тема: Process | RedirectStandardInput чи можна перевідкрити потік ?
Створення процесу виглядає так:
        public const string ContainerShell = "exec -i {0} bash";
        public const string containerId = "<ID>";
...
        private void RunDockerShell(string containerId)
        {
            processDockerShell = new Process();
            processDockerShell.StartInfo.FileName = "docker.exe";
            processDockerShell.StartInfo.RedirectStandardInput = true;
            processDockerShell.StartInfo.RedirectStandardError = true;
            processDockerShell.StartInfo.RedirectStandardOutput = true;
            processDockerShell.StartInfo.CreateNoWindow = true;
            processDockerShell.StartInfo.UseShellExecute = false;
            var CMDContainerShell = string.Format(CMD.ContainerShell, containerId);
            processDockerShell.StartInfo.Arguments = CMDContainerShell;
            processDockerShell.Start();
            processDockerShell.BeginOutputReadLine();
            processDockerShell.BeginErrorReadLine();
            processDockerShell.OutputDataReceived += new DataReceivedEventHandler(ProcOutputHandler);
            processDockerShell.ErrorDataReceived += new DataReceivedEventHandler(ProcOutputHandler);
        }
        private static void ProcOutputHandler(object sendingProcess,
            DataReceivedEventArgs outLine)
        {
            if (!String.IsNullOrEmpty(outLine.Data))
            {
                Console.WriteLine("ProcOutputHandler => " + outLine.Data);
            }
        }1) Якщо я пробую через StandardInput.WriteLine надіслати команду, то вона записує символ нового рядка. Символ "\n" або "\r".
'...BTC/USDT\r', а має бути '...BTC/USDT'2) processDockerShell.WaitForExit - не працює тому що це асинхронний потік. Тобто я не можу знати коли вивід завершився.
            public const string UpdatePairs = "myapp download-data --exchange binance --pairs BTC/USDT";
...
            var CMDUpdatePairs = string.Format(CMD.UpdatePairs, containerId);
            processDockerShell.StandardInput.WriteLine(CMDUpdatePairs);
            processDockerShell.StandardInput.Flush();Тому я вирішив використовувати StandardInput.Write та закривати потік
            public const string UpdatePairs = "myapp download-data --exchange binance --pairs BTC/USDT";
...
            var CMDUpdatePairs = string.Format(CMD.UpdatePairs, containerId);
            processDockerShell.StandardInput.Write(CMDUpdatePairs);
            processDockerShell.StandardInput.Flush();
            processDockerShell.StandardInput.Close();
            processDockerShell.WaitForExit(1200000);
            if (!processDockerShell.HasExited)
            {
            ...А чи можна  заново відкрити потік processDockerShell.StandardInput ? Для того щоб продовжити надсилати нові команди ?
Тобто не заново відкрити процес, а лише потік.