继续使用其他课程的流程

时间:2015-02-09 08:15:44

标签: c# winforms process

我有一个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?

1 个答案:

答案 0 :(得分:3)

您无法启动已经启动的流程,并且在I / O流已经启动后无法重定向。

为什么不将Process实例中的原始form1对象引用传递给form2实例? E.g:

partial class form2
{
    private Process _process;

    public form2(Process process)
    {
        _process = process;
    }
}

然后当form1创建form2实例时(或者任何代码执行...不幸的是,您的代码示例不够完整,无法准确知道引用的最佳路径),它只能通过对form2构造函数的引用。