我有一个自我升级过程,我的主应用程序exe启动一个updater exe在命令行上传递一个句柄.应用程序exe然后调用ExitProcess退出,并且updater在传入的句柄中调用WaitForSingleObject以等待应用程序exe终止.
WaitForSingleObject确实等待.在应用程序调用ExitProcess之前,更新程序会停止.
但是,有时,当更新程序尝试使用新版本覆盖应用程序dll时,我会收到文件锁定错误,当前版本的更新程序将其视为不可恢复的错误并终止.似乎包括任意睡眠(100)足以绕过这个"问题",但我真的很讨厌这样的代码.真的很讨厌.
对我来说,当主应用程序仍处于活动状态以便锁定dll文件时,可以发出进程句柄的信号,这似乎很奇怪.