3

重複の可能性:
“ using {}”内のResponse.Redirect(“”)

ほぼそれ。たとえば、usingステートメントでデータベースへの接続があり、そのusingステートメント内のどこかで別のページにリダイレクトした場合、接続は破棄されますか、それとも最初に手動で呼び出す必要がありますか?

4

4 に答える 4

7

はい、それは絶対に呼び出すでしょうDisposeusingステートメントのポイントはDispose、ブロック内で呼び出されることですfinally。したがって、ブロックが正常に完了するか例外で完了するかに関係なく、リソースは破棄されます。

そのIIRCにはわずかなしわがあり、キャッチされた場合は自動的に再Response.Redirectスローされますが、ブロックThreadAbortExceptionには影響しません。finally

于 2012-08-17T14:50:49.430 に答える
2

接続が適切に破棄されます。usingの単なる構文糖衣ですtry/finally。動作を確認したい場合は、usingforを置き換えてtry/finallyください。finallyリダイレクトを行う前にジャンプします。

于 2012-08-17T14:52:39.717 に答える
0

それはあなたのためにあなたの接続を処分します。

于 2012-08-17T14:50:29.540 に答える
0

Dispose()呼び出されない場合がいくつかあります。

アプリケーションは無限ループに入り、そこから戻ることはありません。アプリケーションが正常にシャットダウンしませんでした。はusingイテレータ内にあり、使用法はまだ実際には入力されていません。

プロセスがハングしたりクラッシュしたりしていないため、最初の2つはまだありません。リダイレクトが内部にあるため、3番目になったことを知っているので、usingそうではありません。

于 2012-08-17T15:44:46.683 に答える