ファイルはスレッドによって書き込み用に開かれます。ファイルへの参照はメソッド内のローカル変数であるため、disposeまたはfinalizerでクリーンアップすることはできません。サイトがシャットダウンされたときにファイルロックが開かないようにする
コードでは、using
ステートメントを使用して、ファイルが閉じられ、通常の操作中にすべてのロックが解除されることを確認します。ただし、サイトのインスタンスをシャットダウンすると、using
ステートメントはFileStream
をクリーンアップする機会を得られない可能性があります。ただし、IISプロセスは開いたままになることがあるため、サーバーが再起動されない限りロックは解除されません。
サイトが停止または再起動したときにファイルロックがハングしないようにするには、どのような方法が最適ですか?
または、IISがサイトをシャットダウンすると、この問題が緩和されますか?
頻度はどのくらいですか?私は、あなたは定期的な問題を解決しているのか、それともそれを仮に防止しようとしているのでしょうか? – fharreau
仮にそれを防ぐ。しかし、私はこれが以前実際に私に起こったと信じています。 – TheCatWhisperer
スレッドのfinallyブロックを実行してファイルハンドルを閉じることを許可しないで、スレッドはどのようにシャットダウンしましたか?スレッドがシャットダウンされた場合、そのローカル変数はもはや根ではなくなります。ファイナライザはなぜ動作しませんか?私はあなたのシナリオがどのように可能か理解していません。 –