C# 除非使用F10单步执行,否则Process.Start()不起作用

C# 除非使用F10单步执行,否则Process.Start()不起作用,c#,processstartinfo,C#,Processstartinfo,我想使用以下方法启动流程: ProcessStartInfo createProject = new ProcessStartInfo(); createProject.FileName = exePath; createProject.UseShellExecute = false; createProject.WorkingDirectory = projectDirectory; createProject.Arguments = exeArguments; try { // S

我想使用以下方法启动流程:

ProcessStartInfo createProject = new ProcessStartInfo();
createProject.FileName = exePath;
createProject.UseShellExecute = false;
createProject.WorkingDirectory = projectDirectory;
createProject.Arguments = exeArguments;

try
{
    // Start the process with the info specified.
    System.Diagnostics.Process.Start(createProject);
}
catch (IOException eX)
{
    // Log error.
    MessageBox.Show("Unable to create project", "Error Creating Project");

}
当我在
Process.Start()
的行上放置一个断点,然后按F10继续执行单步执行时,进程将毫无问题地运行

但是,当我在断点处按F5键或只是在没有任何断点的情况下运行我的应用程序时,会出现一个“您的应用程序已停止工作”对话框,而我的应用程序不会引发任何异常

我还尝试在
进程.Start()
之前使用
线程.Sleep()
,但没有结果

我真想知道是什么导致了这个问题

编辑:检查事件查看器后,我看到故障模块是MSVCR90.dll。我已经安装了9.0.30729.6161版。

检查事件日志(使用eventvwr.exe),查看您启动的进程是否遇到任何关键问题


如果启动的进程也是您的,则可以向其添加日志记录,或使用System.Diagnostics.Debugger.Launch()让它在启动时启动调试器,或者在启动时使用gflags与WinDbg或类似工具进行破解。

这个答案是为那些对问题解决方案感兴趣的人提供的,而不是针对问题本身的务实讨论:

事实上,答案就在问题本身,我是在@rene提出一个问题后得到的

进程在我跳过时运行,因为程序有时间完成它的工作。但当我按F5时,它崩溃了,因为进程本身没有完成。我使用了以下代码:

ProcessStartInfo createProject = new ProcessStartInfo();
createProject.FileName = exePath;
createProject.UseShellExecute = false;
createProject.WorkingDirectory = projectDirectory;
createProject.Arguments = exeArguments;

try
{
    using (System.Diagnostics.Process exeProcess = System.Diagnostics.Process.Start(createProject ))
          {
             exeProcess.WaitForExit();
          }
}
catch (IOException eX)
{
    // Log error.
    MessageBox.Show("Unable to create project", "Error Creating Project");

}
这也是它不抛出任何异常的原因


再次感谢@rene

这取决于进程正在执行的操作以及
exePath
projectDirectory
exeArguments
的值。我们无法为您复制此内容。请注意,您只捕获了一个
IOException
异常,因此任何其他内容都可能使您的应用程序崩溃。@Lati但前面的所有评论都是正确的。如果你问了一个好的、清楚的问题,你就不会有这样的事情发生。恐怕我们真的无法通过心灵感应推断发生了什么:)然而,捕捉所有异常并不能解决你的实际问题。如果它在您单步执行时起作用,但如果您在不暂停的情况下运行它,则不会起作用,例如,您的代码中的某些操作只在一段时间后完成。我想帮助您分析这一点,而不是通过捕获所有异常来掩盖实际问题。为了分析实际问题,需要您提供更多信息。我不是“来这里只是为了写负面评论”,我来这里是为了帮助人们解决独特的问题。要做到这一点,你需要合作。@Lati不,如果这里的每个人都这么做的话,这个网站就会像雅虎回答一样毫无用处。帖子指南不是秘密,任何人都可以在帮助中找到它们。现在,让我们停止争论,编辑您在问题答案下面的评论中留下的信息,并尝试获取完整的堆栈跟踪以及准确的错误和事件日志消息,并将其添加。这不是一个答案,而是一条评论。因此,如果我将其表述为“是的,我遇到了这个问题--这些是我用来解决它的技术”这会更好吗?@TimBarrass根据事件查看器,MSVCR90.dll似乎有问题。我想要启动的进程不是我的,我只有可执行文件。