私は、(とりわけ)Windowsをシャットダウンするために使用できるMFCアプリケーションに取り組んでいます。これを行うとき、WindowsはもちろんWM_QUERYENDSESSIONとWM_ENDSESSIONをすべてのアプリケーションに送信します。ただし、問題は、一部のデストラクタの一部として、実行中に使用された特定のファイルを(CFile :: Removeを使用して)アプリケーションが削除することです。アプリケーションがWindowsによって閉じられたときに、デストラクタが呼び出されると信じる理由があります(ただし、それを確実に知ることは困難です)。
ただし、Windowsを再起動すると、削除されるはずのファイルがまだ存在していることに気付くことがあります。プログラムの実行が同じであっても、これは一貫して発生しません(これをテストするためのスクリプトがあります)。これにより、次の2つのいずれかが発生していると思います。a)デストラクタが常に呼び出されていないか、b)Remove関数が返されますが、Windowsがシャットダウンされる前にファイルが実際に削除されません。
私がこれまでに見つけた唯一の回避策は、プログラムが停止した後、システムをシャットダウンして約10秒間待機させると、ファイルが適切に削除されることです。これにより、b)が当てはまる可能性があると私は信じています。
誰かがこの問題で私を助けてくれることを願っています。
よろしくモート