Когда я пытаюсь перенаправить выход из исполняемого запуска в пакетном режиме, появляется только несколько строк, и нет больше выходных данных. Несмотря на то, что я установил окно, чтобы не было видно, оно все равно всплывает, но в окне нет вывода, поэтому ясно, что выходные данные перенаправляются, но не показывают. Консоль, фактическое окно приложения ничего не выводит. < /p>
Вот какой -то код: < /p>
Process serverProcess;
private void StartServerThread()
{
var serverArguments = GenerateServerArguments();
var serverExecutable = Properties.Settings.Default.Rustserverexecutable;
try
{
ProcessStartInfo info = new ProcessStartInfo
{
WorkingDirectory = System.IO.Path.GetDirectoryName(serverExecutable),
FileName = serverExecutable,
Arguments = "-batchmode",
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
RedirectStandardInput = true,
//WindowStyle = ProcessWindowStyle.Hidden //Application window show no mather what.
};
serverProcess = new Process();
serverProcess.StartInfo = info;
serverProcess.OutputDataReceived += ServerProcess_OutputDataReceived;
serverProcess.ErrorDataReceived += ServerProcess_ErrorDataReceived;
serverProcess.Start();
serverProcess.BeginOutputReadLine();
serverProcess.BeginErrorReadLine();
//serverProcess.StandardInput.WriteLine(serverExecutable + serverArguments); // I tested with cmd.exe and feeding it the path to the executable with arguments, same result.
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.Message);
}
}
< /code>
Кроме того, как я прокомментировал в коде, который я пытался запустить CMD в интерактивном режиме /k < /code>, и кормить его путь к исполняемому файлу, и я попытался перенаправить из пакетного файла, который делает то же самое. Тот и тот же результат.private void ServerProcess_ErrorDataReceived(object sender, DataReceivedEventArgs e)
{
Console.WriteLine(e.Data);
if (!string.IsNullOrEmpty(e.Data.ToString()))
{
Application.Current.Dispatcher.BeginInvoke(new Action(() => {
txt_ServerMessage.Document.Blocks.Add(new Paragraph(new Run("ErrorData: "+e.Data.ToString())));
}));
}
}
private void ServerProcess_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
Console.WriteLine(e.Data);
if (!string.IsNullOrEmpty(e.Data.ToString()))
{
Application.Current.Dispatcher.BeginInvoke(new Action(() => {
txt_ServerMessage.Document.Blocks.Add(new Paragraph(new Run(e.Data.ToString())));
}));
}
}
< /code>
Сервер игры работает, но нет вывода для работы. < /p>
Какова может быть причиной этого? Как я могу успешно перенаправить выход?
Подробнее здесь: https://stackoverflow.com/questions/363 ... d-the-outp