执行多个命令行时出现C#错误

时间:2018-07-26 15:12:11

标签: c# command-line cmd

我使用此代码在C#中执行多cmd命令。
首先,我创建了构造函数以创建过程。

public CMD()
        {
            process = new Process();
            startInfo = new ProcessStartInfo();
            startInfo.WindowStyle = ProcessWindowStyle.Hidden;
            startInfo.CreateNoWindow = true;
            startInfo.RedirectStandardInput = true;
            startInfo.RedirectStandardOutput = true;
            startInfo.RedirectStandardError = true;
            startInfo.UseShellExecute = false;
            startInfo.FileName = "cmd.exe";
            startInfo.Verb = "runas";
            process.StartInfo = startInfo;
            process.Start();
            process.EnableRaisingEvents = true;
            process.StandardInput.AutoFlush = true;
            process.BeginOutputReadLine();
            process.BeginErrorReadLine();
            process.OutputDataReceived += Process_OutputDataReceived;
            process.ErrorDataReceived += Process_ErrorDataReceived;
            process.Exited += Process_Exited;
        }

然后我使用此代码执行多个命令。

public void _cmd(string command)
        {
            using (StreamWriter sw = process.StandardInput)
            {
                if (sw.BaseStream.CanWrite)
                {
                    sw.WriteLine(command);
                }
            }
        }

对于第一个命令没有问题,但是当我发送第二个命令时,我在sw.BaseStream.CanWrite行中遇到了此错误。

Object reference not set to an instance of an object.

当我第一次调试代码sw.BaseStream可以,但是在第二条命令中它得到null
这是什么问题?

1 个答案:

答案 0 :(得分:2)

我怀疑是因为您的using陈述。退出using块后,它将在process.StandardInput()中调用Dispose。