منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : ماهو حل مشكلة تعليق البرنامج في الـ Process ؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله

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

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

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

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

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

اتمنى اجد حل لديكم والله يجزاكم خير
تستعمل Thread ؟
لم استخدمه وكيف يمكن ذلك ?

ممكن توضح اكثر الله يجزاك خير
الThread احد اسباب هذه المشكلة

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

--

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

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

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

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

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


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

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

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

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

يعني متى مااردت اغلاق البرنامج قم باستخدامه فهو سيقتل البروسس فورا
وضعت الكود في Form Login وانتهت المشكلة الان

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

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

تقبل تقديري و احترامي لشخصك الكريم
ان الطريقة المثلى لإغلاق تطبيقات 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) ونفس الشيئ بالنسبة لقواعد البيانات وغيرها من الامور الشبيهة
.
(12-02-14, 03:19 AM)الشاكي لله كتب : [ -> ]ولكن يقولون ان اغلاق الفورم الرئيسي يؤدي الى اغلاق البرنامج بالكامل .

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