0

process.StandardInputからStreamにコマンドを送信する関数を作成する必要があります。ライターが初期化されていないというエラーが発生しています。どうすればこれを修正できますか?

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();
        }
    }
}
4

1 に答える 1

0

あなたが得ている特定のエラーがなければ、これは問題に関する私の最善の推測です。

メンバー変数を作成し、メソッドprivate StreamWriter writer内でアクセスしようとしていstaticます。StreamWriter writer静的にしてみてください。

また、tryブロックはありますが、catchまたはありませんfinally。を完全に削除するか、ブロックtryでエラー処理を追加してください。catch

最後にもう 1 つ、何を達成しようとしているのか完全にはわかりませんが、while ループから抜け出す方法を追加することを強くお勧めします。このままでは無限ループが保証されます。

于 2011-03-13T07:53:38.323 に答える