DataGridView错误:由于未处理的异常,进程已终止

时间:2012-05-23 11:33:00

标签: c# .net winforms datagridview thread-safety

我的Windows应用程序崩溃,因为后台线程即使在表单被处理后也试图更新表单。我的代码如下

if (IsDisposed || dataGridIncidentView.IsDisposed)
                   return;

               if (dataGridIncidentView.InvokeRequired)
               {
                   dataGridIncidentView.Invoke(new MethodInvoker(delegate { rowIndex = dataGridIncidentView.Rows.Add("val1","val2"); }));
               }
               else
               {
                   rowIndex = dataGridIncidentView.Rows.Add("val1", "val2");
               }

事件日志中的错误是:

  

由于未处理的异常,该流程已终止。例外   信息:System.InvalidOperationException Stack:at   System.Windows.Forms.DataGridViewRowCollection.AddInternal(布尔,   System.Object [])at   System.Windows.Forms.DataGridViewRowCollection.Add(System.Object的[])   ..... ..... .....

我对isyncCallBack函数进行了IsDisposed检查。但所有这些检查都没有处理所有情况。任何人都可以建议我,如何解决它?

谢谢,

阿比纳夫

1 个答案:

答案 0 :(得分:0)

您需要在代理中进行IsDisposed检查。

IE:

delegate { 
  if (!IsDisposed) rowIndex = dataGridIncidentView.Rows.Add("val1","val2"); 
}