0

ADO.NET Datareader を使用して、ユーザーが 1000 行のデータベース テーブルからデータを抽出します。彼はその間にブラウザを閉じました。

これは、50 レコードのみをフェッチした後です。データリーダーはどうなりますか? 接続されたままになりますか?

そして、1000 レコードを取得し、その後はどうなるでしょうか? ガベージコレクターはすぐに収集して処分しますか?

4

1 に答える 1

1

mdmullinax は正しいですが、using接続が適切にクリーンアップされるようにすべてをステートメントでラップする必要がありますが、質問は DataReader の実装方法とは関係ありません。

一般的に言えば、ブラウザが切断された場合でも、ページは引き続き実行されます。

そのため、DataReader がサーバーからの応答の読み取りの途中である場合、DataReader が処理が完了したことを示す信号を返す前に、残りのレコードをプルし続けます。

次に、ページの残りのコードの実行が完了し、応答がブラウザーにフラッシュされます。もちろん、ブラウザはこの時点で長い間使用されていないため、これらのパケットは最終的にドロップされます..何かが Response.IsClientConnected プロパティをチェックしていない限り. IsClientConnected プロパティは完全な証拠ではないことに注意してください。サーバーに通知せずに相手側のブラウザーが消える可能性があるためです。

詳細については、こちらを参照してください:処理中にブラウザーを閉じても、asp.net ライフサイクルは続行されますか?

于 2013-02-26T01:22:31.270 に答える