【发布时间】:2015-10-21 12:26:13
【问题描述】:
我想使用以下方法启动一个进程:
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 或仅在没有任何断点的情况下运行我的应用程序时,我得到一个“您的应用程序已停止工作”对话框,而我的应用程序没有抛出任何异常。
我也尝试在Process.Start() 之前使用Thread.Sleep(),但没有结果。
我真的很想知道是什么导致了这个问题。
编辑:检查事件查看器后,我看到错误模块是 MSVCR90.dll。我已经安装了 9.0.30729.6161 版本。
【问题讨论】:
-
这取决于进程正在做什么以及
exePath、projectDirectory和exeArguments的值。我们无法为您复制此内容。 -
请注意,您只会捕获
IOException异常,因此其他任何事情都可能使您的应用崩溃。 -
@Lati 之前的所有 cmets 都是合理的。如果你问一个好的和明确的问题,你就不会发生这样的事情。恐怕我们真的无法通过心灵感应推断出正在发生的事情:)
-
然后,您的实际问题并不能通过捕获所有异常来解决。如果它在您单步执行时有效,但如果您在没有暂停的情况下运行它,那么例如您的代码中的某些东西正在执行,它只会在一段时间后完成。我想帮助您分析那个,而不是通过捕获所有异常来掩盖实际问题。为了分析实际问题,需要您提供更多输入。我不是“来这里只是为了写负面的 cmets”,我来这里是为了帮助人们解决独特的问题。为此,您需要合作。
-
@Lati 不,如果这里的每个人都这样做,这个网站就会变得像 Yahoo Answers 一样无用。帖子指南不是秘密,任何人都可以在帮助中找到它们。现在让我们停止争论并编辑您在问题答案下方的评论中留下的信息,并尝试获取完整的堆栈跟踪以及确切的错误和事件日志消息并添加。
标签: c# processstartinfo