2009-04-24 13 views
1

Windows 2003の私のアプリケーション(VB6とC#2008)では、今度はファイルを含むフォルダの削除に関して同様の動作が見られました。私のコードは、いくつかの一時的なフォルダを構築し、後続の処理のためにそのフォルダにファイルを生成します。処理が完了すると、私のコードは生成された一時フォルダを削除しようとします。削除操作はエラーなしで完了します。NTFSのキューを削除しますか?

しかし、さらに調べると、フォルダがWindowsエクスプローラにまだ存在することがわかります。このフォルダーを参照しようとすると、アクセス許可が拒否されます。その後、アプリは別のラウンドのファイルを処理し、再び一時フォルダを作成しようとします。残念ながら、以前の保留中の削除は完了していないので、フォルダを再度作成しようとすると、権限拒否エラーが発生します。私のアプリを閉じるまで、フォルダは本当に削除されません。アプリケーションが閉じられるとすぐに、フォルダが削除されます。アプリケーションが閉じられるまで、フォルダ削除操作がコミットされないのはなぜですか?

+0

もう1つ質問があります。積極的にロックされたファイルを含むフォルダを削除しないでください。削除操作をキューに入れるのではなく、例外が発生しますか? –

+0

はいそうです。 http://stackoverflow.com/questions/3764072/c-win32-how-to-wait-for-a-pending-delete-to-complete – Henrik

答えて

0

私はそのディレクトリに誤ってロックを保持している可能性はありますか?それはあなたのアプリが離れるまでディレクトリを削除できない理由を説明します。

いくつかのツールがあります - SysInternalsを試してみてください - ファイル/ディレクトリのロックを表示します。あなたのアプリを試して、それがロックを保持しているかどうかを確認してください。私はあなたが強制的にそのロックを削除することができると思う - ディレクトリがすぐに消えたら参照してください。

+0

もう1つ質問があります。積極的にロックされたファイルを含むフォルダを削除しないでください。削除操作をキューに入れるのではなく、例外が発生しますか? –

+0

これは答えではありません... – Henrik