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