为什么WaitForExit()不等待?

时间:2010-09-29 17:18:14

标签: c# .net installer

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

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

            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循环。它会在while循环中睡觉。我发现它有效。然后我删除了那些额外的代码,回到一个WaitForExit。现在看起来很有效。

1 个答案:

答案 0 :(得分:0)

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