1

我的 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 堆栈:在 System.Windows.Forms.DataGridViewRowCollection.AddInternal(Boolean, System.Object[]) 在 System.Windows.Forms.DataGridViewRowCollection.Add(System.Object[]) ..... …………

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

谢谢,

阿比纳夫

4

1 回答 1

0

您需要IsDisposed在委托内部进行检查。

IE:

delegate { 
  if (!IsDisposed) rowIndex = dataGridIncidentView.Rows.Add("val1","val2"); 
}
于 2012-05-23T12:25:20.850 回答