السلام عليكم جماعة الخير.... :)
بدأت مشروع من نوع المشروع Windows Form Applications على فيجوال 2010...
ثم كتبت دالة تقوووم بعمل حساب رياضي طويل يستغرق قرابة العشر دقائق!!
أقوم بإستدعاء الدالة من خلال زر أنشأته في الفورم الرئيسي
هذا هو شكل البرنامج ببساطة::
المشكلة التي أواجهها هو عندما أقوم بضغط الزر (استدعي الدالة) يتوقف البرنامج الرئئيسي عن الاستجابة حتى تنتهي الدالة من الحساب!! أي أن البرنامج يتوقف عن الاستجابة لمدة 10 دقائق!!
حاولت أن أطبق مبدأ ال Thread بهذا الكود
DWORD Pointing; HWND hWnd= (HWND)this->Handle.ToPointer(); ::CreateThread(0,0,(LPTHREAD_START_ROUTINE)MyFunction(hWnd) ,0,0x00000004,&Pointing);
الكود يتنفذ بنجاح ولكن المشكلة لا تزال قائمة!! يتوقف الفورم الرئيسي عن الاستجابة منتظرا تنفيذ الدالة (أو الثريد في حالتنا الأخيرة ) !!
هل من أفكار، مساعدة، حل معين ...