ほぼそれ。たとえば、usingステートメントでデータベースへの接続があり、そのusingステートメント内のどこかで別のページにリダイレクトした場合、接続は破棄されますか、それとも最初に手動で呼び出す必要がありますか?
4 に答える
はい、それは絶対に呼び出すでしょうDispose。usingステートメントのポイントはDispose、ブロック内で呼び出されることですfinally。したがって、ブロックが正常に完了するか例外で完了するかに関係なく、リソースは破棄されます。
そのIIRCにはわずかなしわがあり、キャッチされた場合は自動的に再Response.Redirectスローされますが、ブロックThreadAbortExceptionには影響しません。finally
接続が適切に破棄されます。usingの単なる構文糖衣ですtry/finally。動作を確認したい場合は、usingforを置き換えてtry/finallyください。finallyリダイレクトを行う前にジャンプします。
それはあなたのためにあなたの接続を処分します。
Dispose()呼び出されない場合がいくつかあります。
アプリケーションは無限ループに入り、そこから戻ることはありません。アプリケーションが正常にシャットダウンしませんでした。はusingイテレータ内にあり、使用法はまだ実際には入力されていません。
プロセスがハングしたりクラッシュしたりしていないため、最初の2つはまだありません。リダイレクトが内部にあるため、3番目になったことを知っているので、usingそうではありません。