05-05-16, 04:46 PM
حسبما أذكر فإنه عند تعريف متغير باستخدام الأمر using فإن البرنامج يقوم بالتخلص من المتغير بعد الخروج من الحلقة
و إذا استخدمناه لتعريف متغير لنقل من النوع SqlConnection أو SqlCommand فمن المفترض به التخلص من ذلك المتغير بعد الخروج من الحلقة
ولكن في واقع الأمر واجهت مشكلة في أحد تطبيقات asp.net مع vb.net التي أقوم بتنفيذها وهي انتهاء عدد الاتصالات المسموحة بقاعدة البيانات
ولدى مراجعة الكود وجدت أنني أستخدم مثلا Return cmd.ExecuteScalar للعودة من الـ Function والخروج من الوظيفة ولكن في الواقع أن الاتصال بقي مفتوحا بعد الخروج من الوظيفة بهذه الطريقة مع أنه نظريا خرج من حلقة using أيضا بواقع الحال
وكان الحل هو أن أسند القيمة إلى متغير ثم أغلق الاتصال يدويا ثم أعيد القيمة بواسطة return
فبرأيكم ما هو الوضع هنا ولماذا واجهت هذا الاشكال
فمع أنني حللت المشكل وأنهيت البرنامج إلا أنه مازالت قضية فكرية عالقة بالنسبة لي
و إذا استخدمناه لتعريف متغير لنقل من النوع SqlConnection أو SqlCommand فمن المفترض به التخلص من ذلك المتغير بعد الخروج من الحلقة
ولكن في واقع الأمر واجهت مشكلة في أحد تطبيقات asp.net مع vb.net التي أقوم بتنفيذها وهي انتهاء عدد الاتصالات المسموحة بقاعدة البيانات
ولدى مراجعة الكود وجدت أنني أستخدم مثلا Return cmd.ExecuteScalar للعودة من الـ Function والخروج من الوظيفة ولكن في الواقع أن الاتصال بقي مفتوحا بعد الخروج من الوظيفة بهذه الطريقة مع أنه نظريا خرج من حلقة using أيضا بواقع الحال
وكان الحل هو أن أسند القيمة إلى متغير ثم أغلق الاتصال يدويا ثم أعيد القيمة بواسطة return
فبرأيكم ما هو الوضع هنا ولماذا واجهت هذا الاشكال
فمع أنني حللت المشكل وأنهيت البرنامج إلا أنه مازالت قضية فكرية عالقة بالنسبة لي
