SqlDataReaderを返すメソッド(「GetDataReader」と呼びましょう)があります。これは、データベースへの永続的な接続を維持するSingletonDataFactoryクラス内にあります。
これに伴う問題は、返された後も、DataReaderがDataFactoryのConnectionオブジェクトに「接続」されていることです。したがって、GetDataReaderを呼び出すコードが、戻ってくるDataReaderでClose()を呼び出すことを確認する必要があります。そうしないと、次のように接続が「ロック」されます。
このコマンドに関連付けられている開いているDataReaderがすでにあり、最初に閉じる必要があります。
GetDataReaderから返送する前に、DataReaderを「デタッチ」するにはどうすればよいですか?それか、クローンを作成してクローンを送り返しますか?呼び出し元のコードを常に明示的に閉じる必要はありません。
ここにはベストプラクティスが必要です。
アップデート:
ご意見ありがとうございます。肝心なのは、DataReaderを使用する習慣を失い、DataTablesに切り替える必要があるということです。それらははるかに管理しやすいです。
また、接続プールに関する注意事項にも感謝します。私はそれについて知っていましたが、2つと2つを組み合わせなかっただけで、車輪の再発明をしていることに気づきました。