2011-08-16 96 views
1

我试图运行一个叫做“prog.exe”的进程,参数为“blah $ 00”(有点代码),但无论我尝试失败。应用程序与ProcessStartInfo参数崩溃

string file = "blah $00"; 
string result = string.Empty; 

ProcessStartInfo P = new ProcessStartInfo(@"""" + "prog.exe" + @""""); 
P.Arguments = @"""" + file + @""""; 
P.CreateNoWindow = true; 
P.UseShellExecute = false; 
P.RedirectStandardOutput = true; 
Process.Start(P); 

using (Process process = Process.Start(P)) 
{ 
    using (StreamReader str = process.StandardOutput) 
     result = str.ReadToEnd(); 
} 

MessageBox.Show(result); 

当执行这段代码时,我的程序崩溃了,我不得不使用任务管理器关闭它。

我不知道我的代码有什么问题(我没有正确设置参数?),所以任何帮助,将不胜感激。

+4

你为什么要双引号?你看过命令行的样子吗? –

+0

您是否尝试过不使用“@”“”“? –

+2

为什么你需要引用prog.exe? –

回答

1

从控制台的给定参数运行你的进程,看看会发生什么。如果结果是你期望的,只要删除双引号,这应该可以解决你的问题。

+0

我是否必须从prog.exe和参数中删除双引号,BTW? – david

+0

对于prog.exe肯定,只是提供正确的完整路径,而不是参数,如果你的参数是Blah和$ 00,所以你有2个参数删除引号,如果它是一个参数使用“\”“。 – Tigran

0

我不认为你的程序崩溃。它只是等待“prog.exe”完成!我敢打赌,只要您完成了prog.exe的工作并关闭它,您的程序就会继续运行 - 并确保在任务管理器中它确实没有了。

+0

问题是,CPU使用率高达100%,我的电脑崩溃,直到我使用任务管理器关闭它。 prog.exe的完成时间不应超过5秒钟。 – david

+0

哪些程序会导致CPU使用率?你的程序或prog.exe? –

相关问题