Это редактор, который я создал для компиляции скрипта для 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