كيف أمنع تجمد البرنامج عند Loop ؟ - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175) +--- قسم : قسم اسئلة C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=176) +--- الموضوع : كيف أمنع تجمد البرنامج عند Loop ؟ (/showthread.php?tid=27651) |
كيف أمنع تجمد البرنامج عند Loop ؟ - abozeyd - 25-11-18 عند استخدام Loop مع عدد كبير مع العناصر يحدث تجمد للبرنامج واسوداد للشاشة يمكن منع هذا التجمد عن طريق Threading لكن عند تطبيقه على الشكل التالي كود : Task t = new Task(() => ينعدم أو على الاقل يقل التجمد ويختفي اسواد الشاشة لكن عند انتها العملية تبقى النافذة معلقة لفترة قبل ان تستجيب؟ يعني التجمد ياتي بعد الانتهاء! ما الحل جزاكم الله خيرا؟ ونفس الشيء مع استخدام BackgroundWorker ما دام اللوب شغال الامور طبيعية لكن عند تمام العملية ياتي التعليق لفترة RE: كيف أمنع تجمد البرنامج عند Loop ؟ - abozeyd - 27-11-18 تم حل المشكل والحمد لله وللفائدة أن هذا يقع عند التعامل مع كائن داخل Threading أو BackgroundWorker وكنت أعطي قيمة الـ ProgressBar داخلها وكان هذا يسبب توقف وتجمد للبرنامج بعد انتهاء اللوب ولكن لما جعلت اسناد القيمة للـ ProgressBar قبل استدعاء BackgroundWorker وترك الاظهار والاخفاء داخله تمت العملية بنجاح RE: كيف أمنع تجمد البرنامج عند Loop ؟ - محمد كريّم - 28-11-18 هل جربت async, await RE: كيف أمنع تجمد البرنامج عند Loop ؟ - abozeyd - 29-11-18 حاولت تجربتها بعد تنبيهك أخانا الكريم واستاذي القديم محمد كريم لكن لم تفلح مع ما اريد فليس لي بها كبير المام BackgroundWorker معها مشت الامور على التمام بكل التفاصيل التي اردتها التشغيل المنفصل الايقاف للوب عندما أريد لكن يبقى السؤال قائما ايهما أفضل استعمال الباك قروند ورك أم استعمال التاسك؟ كذلك الذي فهمته من Async - Await أنها تقوم بايقاف الكود عند نقطة معينة حتى يتم ما يوجد عندها ثم تواصل العملية فإذا كان الأمر كذلك فليس هذا مرادي |