الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية معالجة هذا الخطأ الغير متوقع

بدأه gripble في 17 مارس 2010 · 4 رد · 518 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عندي برنامج VB.NET يقوم بتحمل الملفات من FTP خاص بي

ولكن ان انقطع الاتصال في منتصف التحميل فان البرنامج يعلق ويستهلك 95% من المعالج ويبقى في الذاكرة بدون اي حركة Suspend

المطلوب : انه عند حصول اي خلل أو انقطاع مفاجئ للنت في منتصف تحميل ملف معين وليكن 5 ميجا مثلا : المطلوب ان يحاول تحميله من جديد والا يتجمد البرنامج ويجمد معه الجهاز.

طبعا انا عملت تايمر كل 5 ثواني يفحص الانقطاع او مشاكل السوكت try + catch وعند حدوث catch اقوم بعمل اعادة تشغيل للبرنامج وان العملية هذه ضبطت معي 50% الا انه يوجد تعليقات لا يستجيب لها النظام مطلقا مطلقا، واكتشفت ان الخلل يحصل في اثناء بدء البرنامج بالتحميل في ملفات كبيرة الحجم مثلا 2 ميجا وفور حصول الانقطاع او انفصال النت فان النظام لا يستجيب معي اطلاقا ويستهلك 95 % من المعالج وكذلك الرام

يا أخوة يا ريت لو حد عنده اي افادة الا يبخل علي بالله عليكم ، حيث مطلوب ان يشتغل النظام على جهاز منفصل ولوحده وان يعالج اي مشكلة تواجههة تلقائيا.

شكرا

1
#2

لماذا لا تحاول تقسيم ال File إلى Chunks و تقوم بمعالجة كل Chunk بثريد على حدة

و طبعاً انت تعلم ان تطبيقات الشبكات تستلزم بالاساس استخدام ال Multithreading

ايضاً لماذا لم تستخدم ال Compensating resource manager فى مشروعك ما دمت تود ان تكون العملية Transactional على non transactional resources مثل الملفات

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 17 مارس 2010 في 17:30

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#3

اخي طارق ابراهيم اشكرك على الرد والاهتمام

بالنسبة لتقسيم الملف وغيره انا شخصيا لا اريد تعقيد النظام فهو من وجهة نظري ان المشكلة تحدث عندما ينفصل الانترنت حتى لو كان حجم الملف صغيرا فان الخلل يحصل اثناء حالة وجود تحميل ويستهلك معه 95% من المعالج ويتجمد وقد جربت ال Thread فالاستجابة كانت 50% لكن هناك حالات لا تستجيب لها

وبالنسبة ل Compensating resource manager فارجو مزيدا من الشرح لو تكرمتم

شاكرا لكم حسن متابعتكم واهتمامكم

وهذا ان دل على شئ فانما يدل على خبرتكم و اطلاعكم المتواصل والفاعل

شكرا يا اخي

#4

لدى حل كنت افكر به منذ تعاملت معFileZilla Client و تسائلت نفس سؤالك

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

ال CRM هى احدى مكونات ال COM+ المستخدمة فى التطبيقات الموزعة Distributed Applications لاضفاء صفة ال Transaction على الموارد التى لا تحوى Transactional behavior فى اصلها مثل الملفات

اقتباس

المشكلة تحدث عندما ينفصل الانترنت حتى لو كان حجم الملف صغيرا فان الخلل يحصل اثناء حالة وجود تحميل ويستهلك معه 95% من المعالج ويتجمد

ارفق الكود لكى نرى ما المشكلة لديك

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 18 مارس 2010 في 12:32

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#5

إذا كنت تستخدم ال WebClient Class فمن الطبيعي أن تحدث مثل هذه المشاكل خصوصًا إذا كنت تستخدم Synchronous Methods والتي تسبب Blocking لل UI Thread وفي مثل هذه الحالات يمكنك الاستفادة من ال Asynchronous Methods التي تحتويها WebClient Class مثل DownloadFileAsync و UploadFileAsync حيث تعتمد كل منها على استخدام ال ThreadPool , عندها يمكنك الاستفادة كذلك من ال Events مثل DownloadFileCompleted Event و DownloadProgressChanged Event من أجل تتبع أي خطأ من المحتمل أن يحدث .

بالتوفيق.

2

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…