C# “;交叉线程操作无效”;尝试获取Backgroundworker中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

我在Backgroundworker中尝试获取IF语句中combobox的值时遇到一些问题。当我尝试运行此代码时

 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中调用其值,或将其作为参数传入。可能重复的