【发布时间】:2009-01-22 08:19:11
【问题描述】:
我实现了一个自我升级过程,我的主应用程序 exe 启动一个更新程序 exe,在命令行上将句柄传递给它自己。然后应用程序exe调用ExitProcess退出,更新程序在传入的句柄上调用WaitForSingleObject等待应用程序exe终止。
WaitForSingleObject 确实在等待。直到应用程序调用 ExitProcess,更新程序才会停止。
但是,有时,当更新程序尝试使用新版本覆盖应用程序 dll 时,我会收到一个文件锁定错误,我的更新程序的当前版本将其视为不可恢复的错误并终止。似乎包含任意 sleep(100) 足以绕过这个“问题”,但我真的很讨厌这样的代码。真的很讨厌。
在我看来很奇怪,在主应用程序还活着的情况下可以向进程句柄发出信号以锁定 dll 文件。
【问题讨论】:
标签: windows winapi synchronization