我已经使用System.Diagnostics.Process
该类创建了一个进程。这里是代码
Process p = new Process()
{
StartInfo = new ProcessStartInfo(@"some.exe")
{
CreateNoWindow = true,
ErrorDialog = false,
RedirectStandardError = true,
RedirectStandardInput = true,
RedirectStandardOutput = true,
StandardErrorEncoding = Encoding.UTF8,
StandardOutputEncoding = Encoding.UTF8,
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false
}
};
p.OutputDataReceived += (sender, r) =>
{
Console.WriteLine(r.Data);
};
p.Start();
p.BeginOutputReadLine();
int counter = 0;
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.StandardInput.WriteLine("INPUT" + counter++);
p.WaitForExit();
Console.ReadKey();
}
并在 some.exe 中创建 2 个应用程序域,它们实际上是控制台应用程序。使用AppDomain.ExecuteAsselbly("path to exe")
所以当我向进程提供输入时,第一个加载的 appdomain 正在接受所有输入,而第二个没有接受它。
有什么方法可以确定哪个 appdomain 应该接受输入?编辑:-
我突然意识到 AppDomain 一词在这里使用不正确。实际上我的意思是当前进程中的哪个线程应该接受输入。