C# “;交叉线程操作无效”;尝试获取Backgroundworker中comboBox的值时发生异常
我在Backgroundworker中尝试获取IF语句中combobox的值时遇到一些问题。当我尝试运行此代码时C# “;交叉线程操作无效”;尝试获取Backgroundworker中comboBox的值时发生异常,c#,multithreading,combobox,C#,Multithreading,Combobox,我在Backgroundworker中尝试获取IF语句中combobox的值时遇到一些问题。当我尝试运行此代码时 if (KondisiSaldo.SelectedItem == "Kurang dari...") { view.RowFilter = string.Format("[Saldo] < '{0}'", thresholdcas); view2.RowFilter = string.Format("[Saldo] > '{0}'", thresholdc
if (KondisiSaldo.SelectedItem == "Kurang dari...")
{
view.RowFilter = string.Format("[Saldo] < '{0}'", thresholdcas);
view2.RowFilter = string.Format("[Saldo] > '{0}'", thresholdcas);
this.Invoke(new MethodInvoker(delegate
{
ViewDataSaldoGV.DataSource = view;
SaldoUnscheduleGV.DataSource = view2;
}));
}
if(kondisaldo.SelectedItem==“Kurang dari…”)
{
view.RowFilter=string.Format(“[Saldo]<'{0}'”,thresholdcas);
view2.RowFilter=string.Format(“[Saldo]>'{0}'”,thresholdcas);
this.Invoke(新方法调用器(委托
{
ViewDataSaldoGV.DataSource=view;
SaldoUnscheduleGV.DataSource=view2;
}));
}
错误是
跨线程操作无效:从访问控件“KondisiSaldo”
创建线程的线程以外的线程
有人能帮我吗?您正在非GUI线程中访问
Kondisaldo
。将kondisaldo
放在Invoke块中,以在GUI线程上访问它,就像使用view
和view2
控件一样
this.Invoke(new MethodInvoker(delegate
{
if (KondisiSaldo.SelectedItem == "Kurang dari...")
{
view.RowFilter = string.Format("[Saldo] < '{0}'", thresholdcas);
view2.RowFilter = string.Format("[Saldo] > '{0}'", thresholdcas);
ViewDataSaldoGV.DataSource = view;
SaldoUnscheduleGV.DataSource = view2;
}
}));
this.Invoke(新方法调用器(委托
{
如果(KondisiSaldo.SelectedItem==“Kurang dari…”)
{
view.RowFilter=string.Format(“[Saldo]<'{0}'”,thresholdcas);
view2.RowFilter=string.Format(“[Saldo]>'{0}'”,thresholdcas);
ViewDataSaldoGV.DataSource=view;
SaldoUnscheduleGV.DataSource=view2;
}
}));
您可能需要调整您的条件。您正在非GUI线程中访问
kondisaldo
。将kondisaldo
放在Invoke块中,以在GUI线程上访问它,就像使用view
和view2
控件一样
this.Invoke(new MethodInvoker(delegate
{
if (KondisiSaldo.SelectedItem == "Kurang dari...")
{
view.RowFilter = string.Format("[Saldo] < '{0}'", thresholdcas);
view2.RowFilter = string.Format("[Saldo] > '{0}'", thresholdcas);
ViewDataSaldoGV.DataSource = view;
SaldoUnscheduleGV.DataSource = view2;
}
}));
this.Invoke(新方法调用器(委托
{
如果(KondisiSaldo.SelectedItem==“Kurang dari…”)
{
view.RowFilter=string.Format(“[Saldo]<'{0}'”,thresholdcas);
view2.RowFilter=string.Format(“[Saldo]>'{0}'”,thresholdcas);
ViewDataSaldoGV.DataSource=view;
SaldoUnscheduleGV.DataSource=view2;
}
}));
您可能需要调整您的条件。是的,您必须将表单中的值存储在已启动的属性中,然后您可以从backgroundworker中调用其值,或将其作为参数传入。可能重复的“是”必须将表单中的值存储在已启动属性中,然后可以从backgroundworker中调用其值,或将其作为参数传入。可能重复的