繁体   English   中英

尝试在Backgroundworker中获取comboBox的值时出现“跨线程操作无效”异常

[英]“Cross-thread operation is not valid” exception when trying to get value of comboBox in Backgroundworker

尝试在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;
   }));
}

错误说

跨线程操作无效:控件“ KondisiSaldo”从创建该线程的线程之外的其他线程访问。

谁能帮我 ?

您正在非GUI线程中访问KondisiSaldo KondisiSaldo放入Invoke块中,以使用viewview2控件在GUI线程上对其进行访问。

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

您可能需要调整条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM