上面代码有错误 getoutnum.StandardInput 为只读
时间: 2024-10-05 10:04:56 浏览: 34
对不起,我的之前的解释有误。`getoutnum.StandardInput`是用于接收数据的,它默认已经是只读状态,所以在代码中使用`StreamWriter`尝试写入是有问题的。对于这个例子,既然你想从控制台传递命令行参数给外部进程,你应该使用`ProcessStartInfo.Arguments`属性,而不是直接写入`StandardInput`。
以下是修改后的代码片段:
```csharp
private void button1_Click(object sender, EventArgs e)
{
ProcessStartInfo psi = new ProcessStartInfo("C:\\Users\\LFHERO\\Desktop\\程序\\REnum\\GetOutNum.exe");
psi.UseShellExecute = false;
psi.RedirectStandardInput = true; // 保留这行,尽管我们不会直接写入
// 使用Arguments属性来传递命令行参数,这里以字符串数组形式
string[] inputArgs = { "20", "30", "40", "50", "60" };
psi.Arguments = string.Join(" ", inputArgs);
// 创建并启动进程
using (Process getoutnum = new Process())
{
getoutnum.StartInfo = psi;
getoutnum.Start();
// 等待进程结束后,读取标准输出
if (!string.IsNullOrEmpty(textBox1.Text))
textBox1.Clear(); // 清空原有的内容
getoutnum.WaitForExit();
textBox1.Text = getoutnum.StandardOutput.ReadToEnd();
}
}
```
在这个版本中,命令行参数作为`psi.Arguments`设置,`StandardInput`则不需要手动写入。程序启动后,标准输出会被读取到`textBox1`中。
阅读全文