ADO.NET Datareader を使用して、ユーザーが 1000 行のデータベース テーブルからデータを抽出します。彼はその間にブラウザを閉じました。
これは、50 レコードのみをフェッチした後です。データリーダーはどうなりますか? 接続されたままになりますか?
そして、1000 レコードを取得し、その後はどうなるでしょうか? ガベージコレクターはすぐに収集して処分しますか?
mdmullinax は正しいですが、using
接続が適切にクリーンアップされるようにすべてをステートメントでラップする必要がありますが、質問は DataReader の実装方法とは関係ありません。
一般的に言えば、ブラウザが切断された場合でも、ページは引き続き実行されます。
そのため、DataReader がサーバーからの応答の読み取りの途中である場合、DataReader が処理が完了したことを示す信号を返す前に、残りのレコードをプルし続けます。
次に、ページの残りのコードの実行が完了し、応答がブラウザーにフラッシュされます。もちろん、ブラウザはこの時点で長い間使用されていないため、これらのパケットは最終的にドロップされます..何かが Response.IsClientConnected プロパティをチェックしていない限り. IsClientConnected プロパティは完全な証拠ではないことに注意してください。サーバーに通知せずに相手側のブラウザーが消える可能性があるためです。
詳細については、こちらを参照してください:処理中にブラウザーを閉じても、asp.net ライフサイクルは続行されますか?