فکر کنم من ده ها بار شاهد پرسیدن این مورد در فروم بودم!
شما نمی تونید از Thraed جداگانه (یعنی Thraed ای غیر از Thread اصلی فرم) با عناصر روی فرم کار کنید : Thread-Safe Calls to Windows Forms Controls؛ برای اینکار می تونید از BackgroundWorker و یا روش delegate و Callback (که نمونه بحث مطرح شده در این زمینه رو می تونید اینجا ببینید.) استفاده کنید.
یعنی یه چیزی مثل کد زیر باید بنویسید و در نهایت هم SetItemComboBox_ThreadSafe رو استفاده کنید:
delegate void SetItemComboBoxCallback(ComboBox cbox);
private void SetItemComboBox(ComboBox cbox)
{
foreach (string item in ColorName)
{ cbox.Items.Add(item); }
}
private void SetItemComboBox_ThreadSafe();
{
foreach (ComboBox cb in cmb)
{
if (cb.InvokeRequired)
{
SetItemComboBoxCallback sicb = new SetItemComboBoxCallback(SetItemComboBox)
this.Invoke(sicb, new object[] { cb });
}
else
SetItemComboBox(cb)
}
}
پ.ن. : البته من ابن کد رو تو Notepad نوشتم و تست نکردم، خواستم کلیت مطلب رو برسونم!