![]() |
|
[نقاش] الأمر using والتخلص من المتغيرات - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183) +--- الموضوع : [نقاش] الأمر using والتخلص من المتغيرات (/showthread.php?tid=15681) الصفحات:
1
2
|
RE: الأمر using والتخلص من المتغيرات - محمد كريّم - 18-05-16 جملة suing نفسها تترجم الى try{} finally{} للتوضيح أكثر هذا مقال ممتاز http://www.codeproject.com/Articles/6564/Understanding-the-using-statement-in-C https://msdn.microsoft.com/en-us//library/yh598w02.aspx RE: الأمر using والتخلص من المتغيرات - samerselo - 19-05-16 تمام أخي محمد هذا صحيح مشكلتنا هنا هو أنه عندما يتم تدمير الكائن Sqlcommand أو Sqlconnection فإن الاتصال بقاعدة البيانات يبقى مفتوحا لذا كان على المبرمج الانتباه لإغلاق الاتصال قبل العودة من الإجراء وعندما أتعامل مع اتصال بقاعدة السيكول سيرفر من خلال تطبيق asp.net فهنا لدي افتراضيا ما يدعى بـ connection pool يعني عدد الاتصالات الممكن أن تبقى مفتوحة محدود وبهذا نصل إلى مرحلة لم يعد هناك أي امكانية للاتصال حتى يصل أحد هذه الاتصالات إلى نهاية الوقت المسموح له بأن يكون IDLE وتنهيه قاعدة البيانات بشكل افتراضي هناك حل للمشكل وذلك بزيادة حجم Connection Pool ولكن هذا سيؤثر على سرعة التطبيق والأداء فضلا عن استهلاك ذاكرة غير ضروري هناك الكلاس الذي تحدث عنه الأخ silverlight وأنا اطمح لرؤية مثال عملي عنه وعن الطريقة التي يعمل بها[url=http://vb4arb.com/vb/user-1679.html][/url] RE: الأمر using والتخلص من المتغيرات - Abou Eman - 19-05-16 انا الى درسته ان جملة Dispose() تنهى الاتصال وتمسحه من الذاكرة او تغلق الاتصال ب كونكشن . close() RE: الأمر using والتخلص من المتغيرات - محمد كريّم - 19-05-16 كلام الأخت ايمان صحيح وهذا المقال حول الاتصال بقاعدة البيانات والتعامل مع الـ SQL Server Connection Pooling https://msdn.microsoft.com/en-us/library/8xx3tyca%28v=vs.110%29.aspx RE: الأمر using والتخلص من المتغيرات - samerselo - 19-05-16 طيب هذا الحكي بعرفو بس وقت عم يتعلق الأمر بموضوع asp.net والسيكول سيرفر يللي عم يصير فعلي هو الحكي يللي بهذا الرابط http://stackoverflow.com/questions/20203117/using-keyword-doesnt-close-an-open-sql-connection وأنا أساس علقتي بالمشكلة مع عدد الاتصالات الأقصى المسموح ببركة الاتصالات هو انني كنت معتمد على كلام الأخت ايمان والكلام الموجود في الرابط الذي تفضلت بوضعه أخ محمد RE: الأمر using والتخلص من المتغيرات - silverlight - 20-05-16 الكود التالي يوضح الشكل المبدئي للكلاس الذي تحدثت عنه عليك أن تضيف له أي من الدوال التي تريدها و يمكنك هنا ان تستخدم جملة Using و أنت مطمئن تماما أن Connection يتم اغلاقها كود : Imports System.Data.SqlClientالكود التالي يوضح كيف يتم استخدام الكلاس طبعا يمكنك ان تكتب اي إجراءات او تكتب اي دوال و تضيفها للكلاس كيفما شئت أو تقوم بتعديل الكود كيفما شئت للتأكد من أن Connection تم إغلاقها أنا فقط كتبت لك الفكرة المبدئية للكلاس كود : Dim s As String ' read connection fromm ConfigurationManagerأعلم جيدا أن ما سوف أقوله سيزعج بعض الإخوة هنا لكن انا ضد استخدام SQL او MS Access و أري أن كتابة بعض الكلاسات لحفظ البيانات باستخدام Stream أفضل كثيرا من الإعتماد علي قواعد البيانات التقليدية لأنه سيوفر الكثير من الصداع و سيعطي المبرمج قدرة أكبر علي التحكم بالبيانات كيفما يشاء لكن الكثير من المبرمجين غالبا ما تختار الحلول الأسهل عموما وكما يقول المثل الشعبي عندنا في مصر كل شيخ و له طريقة RE: الأمر using والتخلص من المتغيرات - Abou Eman - 20-05-16 الامر اسهل من كده اذا كان اسم كتغير الكونكشن conn ونستخدم conn.close() و conn.open() فقط هنعمل conn.Dispose() ويمكننا استخدام msgbox(conn.State) لمعرفة حالة الاتصال سواء كان مفتوح او مغلق او غير موجود RE: الأمر using والتخلص من المتغيرات - samerselo - 26-05-16 طيب بس وقت بتعمل dispose للكونكشن قبل من تعمل close لها ح توقع بالمشكل ضروري حتى نضمن عدم حدوث المشكل المطروح هو التأكد من إغلاق الاتصال قبل أن يتم التخلص من كائن الاتصال سواء بواسطة الأمر dispose أو بواسطة التصرف الطبيعي للأمر using وهذا عن واقع تجربة RE: الأمر using والتخلص من المتغيرات - Abou Eman - 26-05-16 لماذا لا تنهى الاتصال مع سيشن من فى aspx بالنسبة لردك المفروض تغلق الاتصال اولا وبعدين تحذفه من الذاكرة اما بخصوص ثقل الموقع ده العادى بتاع aspx بطيئ فى التنقل للصفحات ولكن آمن على البيانات واخيرا هناك طريقة غير تقلدية بستخدمها فى الاخطاء ولكن كثير من الناس بشوف بيستخدموها فى شيئ محدد وهى صائد الاخطاء try catch بدلا من جملة اظهار رسالة الخطأ بعد الكاتش او الامساك بها اكتب الكود المراد فعله ..... دى واحدة الثانية استخدم جملة on Erurr go to وحدد له المراد فعله بالظبط عند حدث خطأ ودى افضل فلديشن للمبرمج مش لليوزر على فكرة تقبلو رأى المتواضع |