C# 为什么WaitForExit()不';我等不及了?

C# 为什么WaitForExit()不';我等不及了?,c#,.net,installation,C#,.net,Installation,我正在将自定义操作添加到VS2008安装项目(MSI安装程序)中 我正在调用一个批处理文件来创建数据库,并希望在创建后删除这些文件。我有WaitForExit(),但它不会等待。为什么? ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.UseShellExecute = false; string tempDir = @"C:\Temp\";

我正在将自定义操作添加到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 check的while循环。它将在while循环中休眠。我发现它起作用了。然后我删除了那些额外的代码,回到一个WaitForExit。它现在似乎可以工作了。

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

您的
//执行操作?
异常处理程序不正确。如果启动流程时出现异常,您将不知道。稍后会有一些异常。好的,现在就放一些异常,以便您知道这是否是原因。批处理文件没有问题。它启动了,我可以看到整个过程。需要几秒钟才能完成。