首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么WaitForExit()不等待?

为什么WaitForExit()不等待?
EN

Stack Overflow用户
提问于 2010-09-29 17:18:14
回答 1查看 1.4K关注 0票数 3

我正在将自定义操作添加到我的VS2008安装项目(MSI安装程序)中。

我正在调用一个批处理文件来创建数据库,并希望在之后删除这些文件。我有WaitForExit(),但它不会等待。为什么?

代码语言:javascript
复制
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.UseShellExecute = false;
            string tempDir = @"C:\Temp\";
            startInfo.FileName = tempDir + "sybaseDB\\en_AllInOne_installDB.bat";
            startInfo.Arguments = tempDir + "sybaseDB\\";

            try
            {
                Process startDB = Process.Start(startInfo);
                startDB.WaitForExit();

            }
            catch (Exception e)
            {
                //do something?
            }
            finally {
                System.IO.File.Delete(tempDir);
            }

startInfo.UseShellExecute = true没有区别;批处理的执行没有任何问题,因为它需要用户输入,而我输入y和n来回答问题。但删除操作发生在我输入之前。我在批处理文件的末尾暂停了一下。我可以观察批处理文件的过程。

编辑:我测试了10多次,但没有成功。午饭后,我又放了一个waitForExit和一个带HasExited检查的while循环。它将睡在will循环中。我发现它起作用了。然后,我删除了这些额外的代码,返回到一个WaitForExit。看来现在起作用了。

EN

回答 1

Stack Overflow用户

发布于 2010-09-29 17:42:21

这可能是因为无法执行.bat文件而引发异常。您可能打算通过将cmd.exe文件作为命令行参数来执行.bat。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3824174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档