簡體   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