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デリゲート内でチェックを行う必要があります。

いいえ:

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