المساعده في الخطاء out of memory - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183) +--- الموضوع : المساعده في الخطاء out of memory (/showthread.php?tid=22525) الصفحات:
1
2
|
المساعده في الخطاء out of memory - Rabeea Qbaha - 13-11-17 مرحبا شباب
عندي مشكله صغيره يا ريت افاده او اقتراحات لحلها
بعد ما انتهيت تقربا من البرامج الخاص في اواجه مشكله وهي انه بعد ترك البرنامج لفتره معينه لنقل 5 دقائق و اكثر تبدا الواجه interface بالاختفاء مثل : buttons ,labels ... etc و يظهر لي خطا كالاتي : out of memory انا استخدم custom controls وهي : Bunifu_UI_v1.5.3 لكن استخدم اشياء بسيطه منها وهي ال datagridview و datetimepicker لكن لا اعتقد ان المشكله منها لان كل شيء حتى الكونترول الاصليه من visual studio يحصل فيها هذا الشيء فرجائا افيدوني ، وشكرا. البرنامج قبل : البرنامج بعد :
رساله الخطاء :
وهذه رساله الخطاء بالتفصيل :
كود : System.OutOfMemoryException was unhandled RE: المساعده في الخطاء out of memory - Rabeea Qbaha - 13-11-17 تم حل المشكله بنجاح لكي يستفيد الاخرين : المشكله كانت هي انني اقوم باستدعاء صوره جديده كل مره اقوم بالدخول الى buttons ولا يتم عمل dispose لها. بالشكل الاتي : كود : Private Sub close_butt_MouseEnter(sender As Object, e As EventArgs) Handles close_butt.MouseEnter وكان الحل هو بعمل مصفوفه لجميع الصور التي احتاجها من ال resources و استدعائها مره واحده فقط على هذا الشكل : كود : Private BGImgs As Image() وفي load event : كود : BGImgs = New Image() { ويتم أستخدام الصور بعد ذلك بهذه الطريقة : كود : Private Sub customers_but_MouseEnter(sender As Object, e As EventArgs) Handles customers_but.MouseEnter RE: المساعده في الخطاء out of memory - silverlight - 13-11-17 ملحوظة صغيرة تخصيص الصورة من Resources مثل تخصيص الصورة من مصفوفة و في كلتا الحالتين فإن الكود الذي كتبته و تعتبره حلا للمشكلة لا يقوم بعمل Dispose للصورة والخطأ هو خطأ تراكمي يحدث في عملية رسم الكونترول تقريبا نفس الخطأ يحدث في محموعة من الكونترول موجودة علي نفس الفورم أو علي نفس البانل تقريبا RE: المساعده في الخطاء out of memory - Rabeea Qbaha - 13-11-17 (13-11-17, 09:38 AM)silverlight كتب : ملحوظة صغيرة شكرا على مداخلتك صديقي، أذا ما افضل حل حسب رايك لاستخدام الصور ؟؟ أفدني RE: المساعده في الخطاء out of memory - silverlight - 14-11-17 أي ملفات يتم توظيفها في المشروع عن طريق اضافتها الي Resources المشروع لا يمكن أن تتخلص منها بنفسك بسهولة كما تعتقد لكن المشروع نفسه يتكفل بالتخلص منها عندما ينتهي من العمل و يتم اغلاق المشروع دعي أوضح لك أكثر باستخدام مثال تجريبي افتخ مشروع و اضف للفورم عدد واحد بكتشر بوكس ثم اضف اي صورة بحجم مناسب الي Resources المشروع طبعا الأفضل أنك تجعل Build Action الخاص بالصورة من النوع Embeded Resources ولكي تفعل ذلك من داخل الفيجوال استوديو عليك تنفيذ التالي تقف علي ملف الصورة الموجود في الريسورس وتضغط يمين الماوس وهنا ستظهر لك قائمة جانبية منسدلة أختار منها أخر أختيار وهو بعنوان Properties المفروض هنا سيظهر لك في Solution Explorer شئ مثل Grid منه اضبط Build Action فقط ثم في الحدث laod الخاص بالفورم اكتب الكود التالي دعتي افترض ان إسم الصورة التي تم اضافتها للريسورس هو dest.jpg PHP كود : Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load أو يمكنك كتابة الكود بالشكل التالي PHP كود : Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load الأن عليك تجربة الكود فقط قم بتتشغيل المشروع و لاحظ ماذا سيحدث معك ستلاخظ أنه حدث خطأ أثناء التشغيل لأننا نقوم بعمل Dispose للصورة الموجودة في الريسورس الأن عليك التعديل علي الكود و كتابته بالشكل التالي PHP كود : Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load لاحظ أننا لم نقوم بعمل Dispsoe للصورة من خلال الكود ستلاحظ هنا أن البرنامج سيعمل بشكل صحيح لأن عملية تمرير البيانات الي البكتشر بوكس تمت بشكل صحيح لكن لو فعلا تريد عمل Dispose للصورة بشكل صحيح يجب أن تتعامل مع الصورة الموجودة في الريسورس بشكل أخر والفكرة تنحصر إنك تحتاج الي الحصول علي Reference للصورة وهذا موضوع يطول شرحه قليلا مثال توضيحي للعلم فقط مثلا اضف الكود التالي للحدث Paint الخاص بالفورم أو اكتبه بالشكلل التالي PHP كود : Protected Overrides Sub OnPaint(e As PaintEventArgs) ستلاحظ وبالرغم أننا نقوم بعمل Dispose للصورة ستجد أن الصورة يتم رسمها بالفعل علي الفورم بدون أخطاء ولكي لا أطيل عليك أكثر من ذلك أرجو أن يكون التالي واضحا لك الكونترول مصصم أنه و عندما يكون هناك صورة تم تمريرها بواسطة المبرمج فهنا يقوم الكونترول برسم اتلك الصورة في الحدث Paint الخاص بالكونترول وعندما لا يجد الصورة فهنا يحدث الخطأ شئ اخير وخاص بالكود الذي أنت استخدمته ما فعلته أنت هو أنك أخذت نسخة من الصور الموجودة في الريسورس لكن يظل عليك التخلص من ماهو موجود بالمصفوفة من صور عند اغلاق الفورم أيضا ربما يكون غير مضمون تماما ما فعلته لأنك لا تضمن متي سييقوم نظأم التشغيل بالتخلص من المصفوفة نفسها كلها من أجل ذلك فإن الكود الخاص بالمصفوفة يحتاج لتعديل قليلا و عذرا علي الإطالة ......... RE: المساعده في الخطاء out of memory - Rabeea Qbaha - 14-11-17 شكرا جزيلا اخي silverlight للاسف بعد الكثير من التعديلات و التخلص من ال picture box و استخدام 2 panels لكل زر بدل تبديل الصور في picture box لازلت اواجه نفس المشكله out of memory ، عملت على المشروع لاكثر من 4 شهور و انا الان قريب جدا من وقت التسليم ولا اعرق ما الحل لهذه المصيبه هل بامكانك المساعده ؟؟ استطيع ارسال كامل المشروع لك اذا كان لديك الوقت للمساعده. RE: المساعده في الخطاء out of memory - silverlight - 14-11-17 ارفع المشروع هنا و سأحاول المساعدة بقدر المستطاع RE: المساعده في الخطاء out of memory - Rabeea Qbaha - 14-11-17 (14-11-17, 11:54 PM)silverlight كتب : ارفع المشروع هنا و سأحاول المساعدة بقدر المستطاع هل استطيع ان ارسله لك على الخاص ؟؟ لان المشروع للعميل وليس لدي موافقه العميل للنشر. RE: المساعده في الخطاء out of memory - silverlight - 15-11-17 خاول تعزل المشكلة فقط مش لازم ترفع الداتابيز و أكواد الداتبيز انا عايز الصور و الكونتورل اللي بتخلق المشكلة و بس قبل ما ترفع الملف حاول توضح المعلومات التالية نسخة FrameWork التي تستخدمها نسخة الفيجوال استوديو نسخة الويندوز لأن المشكلة أحيانا قد يكون سببها Bug في System drawing خصوصا في نسخة 2012 و نسخة Framwork 3.5 و ربما هنا قد يكون حل مشكلتك في تحديث Framwork RE: المساعده في الخطاء out of memory - Rabeea Qbaha - 15-11-17 FrameWork = 4.5 نسخة الفيجوال استوديو = 2015 نسخة الويندوز = windows 10 pro قمت بفصل الاتصال من قاعده البيانات وقنت برفع المشروع على Dropbox لكن كيف استطيع ارسال الرابط لك صديقي؟ صدقا لا استطيع نشر source code فهو أمانه و انا اعمل مقابل المال للعميل ولا اتوقع انه سيقبل بنشره وشكرا. |