我正在开发一个可以(除其他外)用于关闭 Windows 的 MFC 应用程序。这样做时,Windows 当然会将 WM_QUERYENDSESSION 和 WM_ENDSESSION 发送到所有应用程序,包括我的。然而,问题是我的应用程序,作为一些析构函数的一部分,删除了在执行期间使用的某些文件(使用 CFile::Remove)。我有理由相信当应用程序被 Windows 关闭时,会调用析构函数(但这很难确定)。
但是,当 Windows 再次启动时,我偶尔会注意到应该删除的文件仍然存在。即使程序的执行相同(我有一个用于测试的脚本),这种情况也不会始终如一地发生。这使我认为正在发生以下两种情况之一:a) 析构函数未始终被调用,或者 b) Remove 函数返回,但在 Windows 关闭之前文件实际上并未被删除。
到目前为止,我发现的唯一解决方法是,如果我让系统在程序停止后等待关闭大约 10 秒钟,那么文件将被正确删除。这使我相信 b) 可能是这种情况。
我希望有人能够帮助我解决这个问题。
问候莫特