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

برنامجي و ال Multithreading !

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

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

إخواني , أرجوا أن تتحلوا بالصبر فأنا واقع بمشكلة استمرت معي أكثر من ثلاثة أشهر و لم أستطع حلها :(

لدي برنامج يؤدي عدة مهام منها ماهو متعلق بقواعد بيانات و منها ما هو متعلق بالتعديل على صفحات إنترنت و هكذا ,

يحتوي برنامجي على صورة إعلانية متغيره يتم جلبها من صفحة على الإنترنت كل دقيقة تقريباً باستخدام أداة التايمر .

تواجهني مشكلة و هي أن البرنامج يتوقف عن الاستجابة بشكل كامل في كل مرة يتم فيها تحديث هذه الصورة !!

لذا استخدمت طريقة تعدد المهام التالية /

بعد استيراد فضاء System.Threading نقوم بتعريف المتغيرات التالية


Private trd As Thread
Public Delegate Sub delegateFillTree()

ثم إضافة الإجراءات المراد تشغيلها في الخلفية و إضافة هذا الإجراء


Private Sub ThreadTask()
Dim objdelegatefilltree As delegateFillTree = AddressOf filltree
objdelegatefilltree.Invoke()
End Sub

ثم أقوم بتشغيله بهذا الكود


trd = New Thread(AddressOf ThreadTask)
trd.IsBackground = True
trd.Start()

و لكن المصيبة العظمى أنه يفيدني برسالة الخطأ التالية

ActiveX control '8856f961-340a-11d0-a96b-00c04fd705a2' cannot be instantiated because the current thread is not in a single-threaded apartment

و ذلك بحكم اني استخدم أداة التحكم WebBrowser !!!!

فبماذا تنصحونني لحل هذه المشكلة , ولكم مني دعوة بظهر الغيب .

#2

السؤال غير واضح أخي الكريم, المرجو إرفاق المشروع أو مشروع مصغر حتى يتمكن باقي الأعضاء من فهم المشكل جيدا و المساعدة في الحل...

#3
محمد رضى كتب:

السؤال غير واضح أخي الكريم, المرجو إرفاق المشروع أو مشروع مصغر حتى يتمكن باقي الأعضاء من فهم المشكل جيدا و المساعدة في الحل...

أهلا أخي الكريم

سأعيد السؤال بطريقة أخرى ليتفهم الإخوه المشكلة .

وضعت في برنامجي صفحة إنترنت باستخدام الأداة WebBrowser يتم تحديث هذه الصفحة كل دقيقة بواسطة أداة التايمر .

عند كل تحديث لهذه الصفحة يتوقف البرنامج عن الاستجابة (يهنق) حتى يتم تحميل الصفحة بشكل كامل ثم يعود البرنامج للوضع الطبيعي !

فهل من طريقة تمنع هذا التوقف ؟

#4

عدل الكود

trd = New Thread(AddressOf ThreadTask) 
trd.IsBackground = True 
trd.Start()

إلى

trd = New Thread(AddressOf ThreadTask) 
trd.IsBackground = True 
trd.SetApartmentState(ApartmentState.MTA)
trd.Start()

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 26 يوليو 2010 في 15:59

1

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

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