gpt4 book ai didi

c# - 为什么 WaitForExit() 不等待?

转载 作者:行者123 更新时间:2023-11-30 18:43:48 25 4
gpt4 key购买 nike

我正在将自定义操作添加到我的 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。现在看来可以了。

最佳答案

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

关于c# - 为什么 WaitForExit() 不等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3824174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com