继续使用来自另一个 class 的进程

Continuing using process from another class

我有一个 winform 应用程序和一个控制台应用程序...我 运行 控制台作为子项,winform 作为父项..我想在另一个 [=22] 中继续使用相同的进程=] 但是那给我一个类型的错误: StandardOut 没有被重定向或者进程​​还没有开始。 这是以下代码: 在第一个 class :

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;


}

在另一个 class

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 没问题,并且正在从所有进程中捕获指定的进程,但是出了点问题...有什么帮助吗?

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

为什么不直接将原始 Process 对象引用从 form1 实例传递给 form2 实例?例如:

partial class form2
{
    private Process _process;

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

然后当 form1 创建 form2 实例时(或任何代码做的......不幸的是,你的代码示例不够完整,无法确切知道引用的最佳路径),它可以只需将引用传递给 form2 构造函数。