Ошибка: ожидание процесса, чтобы открыть другой конец канала. Пока process.StandardOutput.ReadToEnd (); - PullRequest
0 голосов
/ 31 марта 2020

Это редактор, который я создал для компиляции скрипта для Skyrim, он используется много тысяч раз в месяц, но в течение последних нескольких недель я получаю сообщение об ошибке от одного пользователя, здесь отчет:

Исключение Источник информации mscorlib Метод WinIOError Тип System.IO.IOException Ошибка Ожидание процесса, чтобы открыть другой конец канала. Трассировка стека в System.IO .__ Error.WinIOError (Int32 errorCode, String MaybeFullPath) в System.IO.FileStream.ReadCore (буфер Byte [], смещение Int32, число Int32) в System.IO.FileStream.Read (массив Byte []) , Смещение Int32, число Int32) в System.IO.StreamReader.ReadBuffer () в System.IO.StreamReader.ReadToEnd () в SkyrimScriptCompilerProFinal.Form1.Save (вкладка TabPage) в C: \ Users \ xxxxxx \ Documents \ Visual Studio 2019 \ Projects \ SkyrimScriptCompilerProFinal \ SkyrimScriptCompilerProFinal \ Form1.cs: строка 6690

Теперь вот код, который дает мне ошибку

    try
                    {
                        if (_skyrimPath != null)
                            using (var compiler = new Process
                            {
                                StartInfo =
                                {
                                    FileName = Path.Combine(_skyrimPath, @"Papyrus Compiler\PapyrusCompiler.exe"),
                                    Arguments =
                                        $@"{tab.Tag as string} -f=""TESV_Papyrus_Flags.flg"" -i=""{Path.Combine(_skyrimPath, @"Data\scripts\source")}"" -o=""{Path.Combine(_skyrimPath, @"Data\scripts")}""",
                                    UseShellExecute = false,
                                    RedirectStandardOutput = true,
                                    RedirectStandardError = true,
                                    CreateNoWindow = true
                                }
                            })
                            {
                                string eOut = null;
                                compiler.ErrorDataReceived += (sender, e) => { eOut += e.Data; };

                                compiler.Start();

                                compiler.BeginErrorReadLine();
                                var ou = compiler.StandardOutput.ReadToEnd();

                                compiler.WaitForExit();

                                Console.WriteLine(eOut);
                                Console.WriteLine(ou);
                            }
                    }

Строка кода, которая дает мне ошибку var ou = compiler.StandardOutput.ReadToEnd ();

Спасибо за любую помощь, я не могу воспроизвести ошибку.

Пользовательская система - Microsoft Windows NT 10.0.18362.0 и Framework: 4.0.30319.42000

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...