Guys,
can you tell me how to fix this code?
I am getting following error: Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on
here is my code:
//Class Private variables
CountdownEvent _countdownEmployee = new CountdownEvent(2);
void populateDeactivateEmployees(object myForm)
{
try
{
ComboBox cmbCompany2 = (ComboBox)((Form)myForm).Controls["cmbCompany"];
ComboBox cmbActivateEmployee2 = (ComboBox)((Form)myForm).Controls["cmbActivateEmployee"];
{
if (cmbActivateEmployee2.Items.Count > 0)
{
cmbActivateEmployee2.DataSource = null;
cmbActivateEmployee2.Items.Clear();
}
cmbActivateEmployee2.DisplayMember = "employeeName"; // Column Name
cmbActivateEmployee2.ValueMember = "employeeId"; // Column Name
cmbActivateEmployee2.DataSource = business.food_GetEmployees((string)cmbCompany2.SelectedValue.ToString(), false);
}
}
catch (Exception Ex)
{
MessageBox.Show(Ex.ToString());
}
finally
{
_countdownEmployee.Signal();
}
}
void populateEmployees()
{
if (cmbCompany.SelectedValue != null && cmbCompany.SelectedValue.ToString() != "0")
{
string companyId = cmbCompany.SelectedValue.ToString();
Form myForm = this;
CheckForIllegalCrossThreadCalls = false;
new Thread(populateDeactivateEmployees).Start(myForm);
new Thread(populateActivateEmployees).Start(myForm);
_countdownEmployee.Wait();
}
}
void populateActivateEmployees(object myForm)
{
try
{
ComboBox cmbEmployee2 = (ComboBox)((Form)myForm).Controls["cmbEmployee"];
ComboBox cmbCompany2 = (ComboBox)((Form)myForm).Controls["cmbCompany"];
cmbEmployee2.DisplayMember = "employeeName"; // Column Name
cmbEmployee2.ValueMember = "employeeId"; // Column Name
DataTable table = business.food_GetEmployees((string)cmbCompany2.SelectedValue.ToString(), true);
if (table.Rows.Count > 0)
{
DataRow dr = table.NewRow();
dr["employeeName"] = "Select All";
dr["employeeId"] = 0;
table.Rows.InsertAt(dr, 0);
cmbEmployee2.DataSource = table;
}
}
catch (Exception Ex)
{
MessageBox.Show(Ex.ToString());
}
finally
{
_countdownEmployee.Signal();
}
}