c# - “Cross-thread operation is not valid” 尝试在 Backgroundworker 中获取 comboBox 的值时出现异常

标签 c# multithreading combobox

尝试在 Backgroundworker 的 IF 语句中获取组合框的值时遇到一些问题。当我尝试运行这段代码时

 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;
   }));
}

错误说

Cross-thread operation not valid: Control 'KondisiSaldo' accessed from a thread other than the thread it was created on.

谁能帮帮我?

最佳答案

您正在非 GUI 线程中访问 KondisiSaldo。将 KondisiSaldo 放在 Invoke block 中以在 GUI 线程上访问它,就像您对 viewview2 控件所做的那样。

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;
   }
}));

您可能需要调整您的状况。

关于c# - “Cross-thread operation is not valid” 尝试在 Backgroundworker 中获取 comboBox 的值时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41950173/

相关文章:

c - C中的任何单消费者单生产者无锁队列实现?

java - 无法在未调用 Looper.prepare() : java. lang.RuntimeException 的线程内创建处理程序

java - JComboBox as Jtable CellEditor with Overriden stopCellEditing modifies wrong table cell

c# - 具有重复字符的子串

c# - 如何在开始 xUnit 测试之前启动 docker-compose 中指定的容器?

c# - 没有选项卡的 WPF TabPanel?

wpf - MVVM WPF ComboBox SelectedItem 绑定(bind)未在数据网格内激活

c# - WebBrowser 控件不工作

java - 我在 Scala 中同步什么对象?

c# - 为什么在一个 Combo 中更改 SelectedItem 会更改所有其他 Combo?