C# 应用程序因ProcessStartInfo参数而崩溃

C# 应用程序因ProcessStartInfo参数而崩溃,c#,C#,我试图运行一个名为“prog.exe”的进程,其参数为“blah$00”(某种代码),但无论我尝试什么都失败了 string file = "blah $00"; string result = string.Empty; ProcessStartInfo P = new ProcessStartInfo(@"""" + "prog.exe" + @""""); P.Arguments = @"""" + file + @""""; P.CreateNoWindow = true; P.Use

我试图运行一个名为“prog.exe”的进程,其参数为“blah$00”(某种代码),但无论我尝试什么都失败了

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);
当执行这段代码时,我的程序就崩溃了,我不得不使用任务管理器关闭它



我不确定我的代码出了什么问题(我没有正确设置参数吗?),因此非常感谢您的帮助。

我认为您的程序不会崩溃。它只是等待“prog.exe”完成!我敢打赌,一旦使用完prog.exe并将其关闭,您的程序将继续运行,并在任务管理器中确保它确实已消失。

我认为您的程序不会崩溃。它只是等待“prog.exe”完成!我敢打赌,一旦使用完prog.exe并将其关闭,您的程序将继续运行—并在任务管理器中确保它确实已消失。

从控制台使用给定参数运行您的进程,然后查看发生了什么。若结果是您所期望的,只需删除双引号,这将解决您的问题。

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

为什么要对所有内容都使用双引号?你有没有看过命令行的样子?你有没有在没有
@“
s”的情况下尝试过它?为什么你需要在prog.exe周围加引号?prog.exe也是你编写的程序吗?是否需要启动两次该过程?您在使用语句之前先开始使用P,然后作为声明的一部分再次使用声明…为什么要重复引用所有内容?你有没有看过命令行的样子?你有没有在没有
@“
s”的情况下尝试过它?为什么你需要在prog.exe周围加引号?prog.exe也是你编写的程序吗?是否需要启动两次该过程?您在使用语句之前启动了
P
,然后再次作为
使用
声明的一部分…问题是,CPU使用率猛增到100%,我的电脑崩溃,直到我使用任务管理器关闭它。prog.exe的完成时间不应超过5秒左右。哪些程序会导致CPU使用?你的程序或prog.exe?问题是,CPU使用率飙升至100%,我的电脑崩溃,直到我使用任务管理器关闭它。prog.exe的完成时间不应超过5秒左右。哪些程序会导致CPU使用?您的程序或prog.exe?我是否必须从prog.exe和参数中删除双引号,顺便说一句?对于prog.exe,请确保为参数提供正确的完整路径,如果您的参数为Blah和$00,那么您有两个参数删除引号,如果是一个参数,请使用“\”“。我必须从prog.exe和参数中删除双引号吗?顺便说一句,对于prog.exe,只需为参数提供正确的完整路径即可,如果您的参数为Blah和$00,那么您有两个参数删除引号,如果“是一个参数,请使用”\”。