我有一个winform应用程序和一个控制台应用程序...我作为一个孩子运行控制台,winform作为父..我想继续在另一个类中使用相同的进程,但那给了我一个类型的错误:StandardOut尚未重定向或进程尚未启动。 这是以下代码: 在第一堂课:
public class form1
{
//in some method:
Process p = new Process();
p.StartInfo.FileName="AIComputer.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.Start();
game.processID = p.Id;
}
并在另一个班级
public class Game
{
在form2加载事件
中{
p = new Process();
Process[] allprocesses = Process.GetProcesses();
int i = 0;
do
{
i++;
} while (allprocesses[i].Id != processID&&i<allprocesses.Count());
p = allprocesses[i];
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.Start();
}
}
我用断点检查了我的代码..进程p没问题,正在从所有进程中捕获指定的进程,,,但是出了点问题......任何帮助都是PLZ?
答案 0 :(得分:3)
您无法启动已经启动的流程,并且在I / O流已经启动后无法重定向。
为什么不将Process
实例中的原始form1
对象引用传递给form2
实例? E.g:
partial class form2
{
private Process _process;
public form2(Process process)
{
_process = process;
}
}
然后当form1
创建form2
实例时(或者任何代码执行...不幸的是,您的代码示例不够完整,无法准确知道引用的最佳路径),它只能通过对form2
构造函数的引用。