समस्या यह है कि, किसी कारण से, आपका डेटा रीडर बंद नहीं किया जा रहा है। एक अपवाद? उपयोगकर्ता को DataReader को बंद करने की विधि याद नहीं आई?
एक फ़ंक्शन जो अपने शरीर के बाहर उपयोग किए जाने वाले DataReader को लौटाता है, उसे बाहरी कोड पर बंद करने की जिम्मेदारी छोड़ देता है, इसलिए इस बात की कोई गारंटी नहीं है कि रीडर बंद हो जाएगा। यदि आप पाठक को बंद नहीं करते हैं, तो आप उस कनेक्शन का पुन:उपयोग नहीं कर सकते जिसमें इसे खोला गया था।
इसलिए किसी फ़ंक्शन से DataReader को वापस करना एक बहुत बुरा विचार है!
आप इस विषय पर पूरी चर्चा देख सकते हैं यहां ।
इस फ़ंक्शन के उपयोग के लिए देखें (GetDataReader
), और जांचें कि क्या इस बात की गारंटी है कि पाठक बंद हो रहा है। और, सबसे महत्वपूर्ण बात, इस बात की कोई संभावना नहीं है कि यह कोड फिर से प्रवेश करे और पहले बंद होने से पहले एक नया डेटा रीडर खोलने के लिए उसी संग्रह का उपयोग करे। (CommandBehavior.CloseConnection द्वारा गुमराह न हों। यह केवल तभी कनेक्शन बंद करने का ख्याल रखता है जब DataReader बंद हो... केवल तभी जब आप इसे बंद करने में विफल न हों)