继续使用来自另一个 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
构造函数。
我有一个 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
构造函数。