【发布时间】:2014-02-18 09:14:01
【问题描述】:
我正在尝试使用 process.start() 从控制台应用程序启动记事本。记事本也在打开,但它在后台。一旦我关闭我的控制台应用程序,它就会启动。 下面是我的代码。我试过在主线程和单独的线程中打开它。 建议我如何以交互模式打开记事本或其他程序而不会被阻止。
请帮帮我
static void RunApplication()
{
Process proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = @"C:\Windows\system32\cmd.exe",
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
RedirectStandardInput = true,
},
};
proc.OutputDataReceived += App_OutputDataReceived;
proc.ErrorDataReceived += App_ErrorDataReceived;
proc.Start();
proc.BeginErrorReadLine();
proc.BeginOutputReadLine();
RunCommand(proc, @"C:");
RunCommand(proc, @"notepad.exe");
Thread.Sleep(10000);
}
static void RunCommand(Process p, string command)
{
p.StandardInput.WriteLine(command);
p.StandardInput.Flush();
}
static void App_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
//OutPutReceivedFromThread += e.Data + "\r\n";
Console.WriteLine(e.Data + "\r\n");
}
static void App_ErrorDataReceived(object sender, DataReceivedEventArgs e)
{
//OutPutReceivedFromThread += e.Data + "\r\n";
Console.WriteLine(e.Data + "\r\n");
}
【问题讨论】:
-
拜托!!!我已经做了我知道的一切..
-
请添加RunCommand函数代码
标签: c# multithreading process console-application