منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] ماهو حل مشكلة تعليق البرنامج في الـ Process ؟ - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] ماهو حل مشكلة تعليق البرنامج في الـ Process ؟ (/showthread.php?tid=1886)



ماهو حل مشكلة تعليق البرنامج في الـ Process ؟ - code01 - 12-02-14

السلام عليكم ورحمة الله

اخواني الاعضاء

تحية طيبة وبعد

لدي برنامج مبرمج بلغة vb.net 2010
وتفاجأت بعد انهاءه وبعد تشغيل البرنامج وإغلاقه لا يعمل مرةً أخرى وذلك بسبب تعليق البرنامج في الـ Process

جرب استخدم Application Exit في حدث FormClosing ولم تفلح الطريقة

غير منطقي اذهب للمعالج وأغلق البرنامج من هناك ثم اعود بفتحه مرة اخرى

اتمنى اجد حل لديكم والله يجزاكم خير


RE: ماهو حل مشكلة تعليق البرنامج في الـ Process ؟ - الشاكي لله - 12-02-14

تستعمل Thread ؟


RE: ماهو حل مشكلة تعليق البرنامج في الـ Process ؟ - code01 - 12-02-14

لم استخدمه وكيف يمكن ذلك ?

ممكن توضح اكثر الله يجزاك خير


RE: ماهو حل مشكلة تعليق البرنامج في الـ Process ؟ - الشاكي لله - 12-02-14

الThread احد اسباب هذه المشكلة

اذا ماستعملته اذن نستبعده

--

تأكد ان تقوم بإغلاق الform الرئيسي

او بدل ماتعور راسك استعمل (Environment.Exit(0 في حدث closing او في اي مكان تريده ان يغلق البرنامج



RE: ماهو حل مشكلة تعليق البرنامج في الـ Process ؟ - code01 - 12-02-14

ممتاز

الآن لدي 20 فورم

ومن ضمنها الفورم الرئيسي والذي يتفرع منه بقية الفورمز

أين اضع هذا الكود ؟
اقصد في اي فورم بالضبط ؟


شكر الله سعيك


RE: ماهو حل مشكلة تعليق البرنامج في الـ Process ؟ - الشاكي لله - 12-02-14

على حسب برنامجك

فكيف اقول لك ضعه في الفورم2 وانا لااعلم ماهو هذا الفورم

شوف فقط بكلمات بسيطة

إقتباس :Environment.Exit Just kill the Process

يعني متى مااردت اغلاق البرنامج قم باستخدامه فهو سيقتل البروسس فورا


RE: ماهو حل مشكلة تعليق البرنامج في الـ Process ؟ - code01 - 12-02-14

وضعت الكود في Form Login وانتهت المشكلة الان

هل هذا حل جذري ؟؟

يا اخي جبال من الشكر لك

تقبل تقديري و احترامي لشخصك الكريم


RE: ماهو حل مشكلة تعليق البرنامج في الـ Process ؟ - الشاكي لله - 12-02-14

ان الطريقة المثلى لإغلاق تطبيقات Windows forms هي استخدام Application.Exit



--

مقارنة بسيطة

Application.Exit VS Environment.Exit VS Form.Close


Application.exit : تقوم بإنهاء Windows message loop (اي الرسائل التي تتحكم في الفورم) وتقوم بإغلاق جميع الforms ، وايضا تعطي فرصة لبعض الاحداث بالانفجار .. كأحداث الاغلاق امثال Form.OnClose

Environment.Exit : قتل الـProcess فورا ، يعني كأنك تغلق البرنامج من ال Task Manger > Process List > [Your app] > End process ... يؤدي ذلك الى عدم ظهور رسائل الحفظ ماقبل الاغلاق ، وايضا في حالة استخدام الDatabase او الsocket او الfile stream فأن كل هذا لن يتم قطع الاتصال معهم . لذلك كن حذرا عندما تستخدم هذا الكود ، فعليك التأكد انك قمت بإغلاق كل ماسبق . وايضا تذكر ان هذا الكود لن ينفع إن كنت تستعمل (رسائل الحفظ ماقبل الاغلاق) مثل هذه :



Form.Close : اغلاق الفورم ببساطة ، ذلك يعني انه لايقوم بإغلاق البرنامج بل الفورم فقط ... ولكن يقولون ان اغلاق الفورم الرئيسي يؤدي الى اغلاق البرنامج بالكامل .


--



فالذي اعلمه ان الApplication.exit لاتقوم باغلاق البرنامج بشكل صحيح في حالة واحدة وهي عند استخدام الThread او Loop لم ينتهي .

لذلك اذا كان من الصعب عليك تشخيص الخطأ ، فاستخدم Environment.Exit فلن يضر ذلك ، لكن كما قلت يجب ان تتأكد من قطع اتصالاتك مع الموارد.

طبعا دائما وابدا قم بقطع اتصالاتك بالموارد فور انتهاء عملك معها ، فعند فتح ملف والانتهاء من الكتابة عليه قم باغلاقه (file.close) ونفس الشيئ بالنسبة لقواعد البيانات وغيرها من الامور الشبيهة
.



RE: ماهو حل مشكلة تعليق البرنامج في الـ Process ؟ - Genius Live - 15-02-14

(12-02-14, 03:19 AM)الشاكي لله كتب : ولكن يقولون ان اغلاق الفورم الرئيسي يؤدي الى اغلاق البرنامج بالكامل .

نعم هذا الكلام صحيح في حال إستخدامك Shutdown mode الاختيار When startup form closes كما بالشكل التالي :