السلام عليكم ورحمه الله وبركاته
كيف يتم عمل tab بحيث تكون كل tapشغاله في thread لوحدها
السلام عليكم ورحمه الله وبركاته
كيف يتم عمل tab بحيث تكون كل tapشغاله في thread لوحدها
احد الحلول:
يمكنك استخدام Background worker لكل تاب بحيث تقوم بتنفيذ العمليات التي تريدها داخله
هذه ثلاث نقاط او خطوات موجودة في ال MSDN لكيفية عمل نداء لكنترول وتكون العملية threadsafe
اقتباسHow to: Make Thread-Safe Calls to Windows Forms Controls
Thread-Safe Calls to a Windows Forms Control
To make a thread-safe call a Windows Forms control
1-Query the control's InvokeRequired property.
2-If InvokeRequired returns true, call Invoke with a delegate that makes the actual call to the control.
3-If InvokeRequired returns false, call the control directly.
مثال:
لنفرض انه عندك في احد ال tabs مجموعة عمليات تتضمن حسابات ومن ثم عرض بعض النتائج على احد ال controls وليكن textbox
اولا تقوم بتكوين ال background worker اما بأخذه من صندوق الادوات ووضعه على الفورم او عن طريق اضافته للكود
private System.ComponentModel.BackgroundWorker bgw; this.bgw = new System.ComponentModel.BackgroundWorker(); this.bgw.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bgw_DoWork); this.bgw.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bgw_RunWorkerCompleted);
ومن ثم عندما تريد ان تجعل العمليات في تاب معين ان تشتغل نتيجة لحدث معين , اجعل هذا ال worker يبدأ العمل
private void Form_Load(object sender, EventArgs e)
{
bgw.RunWorkerAsync();
}بمجرد تشغيل هذا العامل فأن جميع العمليات سوف تتم بصورة منفصلة عن باقي برنامجك داخل event خاص بهذا العامل يسمى DoWork
private void bgw_DoWork(object sender, DoWorkEventArgs e)
{
//the things you want to execute in a separate space in your program
//if you want now to modify a control that has been created in a different thread then you have to //invoke this control
}
private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.tb.text="modified text";
}ولكن اذا كانت عملياتك تتظمن التغيير في خصائص بعض الكونترولز ومن ثم تنفيذ عمليات برمجية اخرى فهذا يتطلب منك عمل invoke لهذا الكنترول قبل التعامل معه
هذا رابط يبين كيفية التعامل مع هذه الحالة
وهذا رابط داخل ال MSDN يشرح بعض النقاط المهمة
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_fxmclictl/html/138f38b6-1099-4fd5-910c-390b41cbad35.htm
السلام عليكم
تم تعديل هذه المشاركة بواسطة ahmed_3d في 25 يناير 2007 في 17:06
"خيركم من تعلم العلم وعلمه". ..........استغفر الله. ........ اللهم صلي وسلم على سيدنا محمد
احمد عبد الحميد ابوغرارة
جزاك الله كل الخير
هذا الموضوع مغلق.