Используйте StreamWriter или Stream вне функции - PullRequest
0 голосов
/ 13 марта 2011

Мне нужно сделать функцию для отправки команд в поток из процесса. Стандартный. Я имею ошибку с писателем не будет инициализирован. Как я могу это исправить?

private StreamWriter writer;

private static void SendProcessCmd(string cmd)
{
    writer.WriteLine(cmd);
}

public static void CreateProcess()
{
    ProcessStartInfo processInfo = new ProcessStartInfo("java.exe", args);
    processInfo.CreateNoWindow = true;
    processInfo.UseShellExecute = false;
    processInfo.RedirectStandardInput = true;

    try
    {
        using (Process process = Process.Start(processInfo))
        {
            writer = new StreamWriter(process.StandardInput.BaseStream);
            //writer = process.StandardInput;

            while (true)
            {
                String strInput = Console.ReadLine();
                writer.WriteLine(strInput);
            }

            process.WaitForExit();
        }
    }
}

1 Ответ

0 голосов
/ 13 марта 2011

Без конкретной ошибки, которую вы получаете, это мое лучшее предположение о проблеме.

Вы создаете переменную-член private StreamWriter writer и пытаетесь получить к ней доступ внутри static методов. Попробуйте сделать StreamWriter writer статичным.

Кроме того, у вас есть блок try, но нет catch или finally. Либо удалите try полностью, либо добавьте обработку ошибок с помощью блока catch.

И последнее, я не уверен, что вы пытаетесь выполнить полностью, но я бы решительно предложил вам добавить способ вырваться из цикла while. Как таковой, он гарантированно будет бесконечным циклом.

...