Я работаю над приложением MFC, которое может (помимо прочего) использоваться для выключения Windows.При этом Windows, конечно, отправляет WM_QUERYENDSESSION и WM_ENDSESSION всем приложениям, включая мое.Однако проблема в том, что мое приложение, как часть некоторых деструкторов, удаляет определенные файлы (с помощью CFile :: Remove), которые использовались во время выполнения.У меня есть основания полагать, что деструкторы вызываются (но это точно неизвестно), когда приложение закрывается Windows.
Однако, когда Windows запускается снова, я иногда замечаю, что файлыкоторые должны были быть удалены, все еще присутствуют.Это не происходит последовательно, даже когда выполнение программы идентично (у меня есть скрипт для проверки этого).Это заставляет меня думать, что происходит одно из двух: либо а) деструкторы не вызываются последовательно, либо б) функция удаления возвращается, но файл фактически не удаляется до закрытия Windows.
Единственный обходной путь, который я нашел до сих пор, - это то, что если я заставлю систему ждать с выключением в течение приблизительно 10 секунд после остановки моей программы, тогда файлы будут должным образом удалены.Это заставляет меня верить, что б) может иметь место.
Я надеюсь, что кто-то сможет мне помочь с этой проблемой.
С уважением, Морт