したがって、ラベルを更新するこの単純なクラスがあり、さまざまなスレッドからアクセスされ、アプリケーションの進行状況が報告されます。正常に動作しますが、このアプリを閉じると、このコードは、破棄されたものにアクセスしようとすると常にエラーをスローします。
private delegate void SetLabelTextDelegate(string str1, string str2);
public void SetLabelText(string str1, string str2)
{
if (this.label1.InvokeRequired || this.label2.InvokeRequired)
{
this.Invoke(new SetLabelTextDelegate(SetLabelText), new object[] { str1, str2});
return;
}
this.label1.Text = (str1 == string.Empty) ? this.label1.Text : str1;
this.label2.Text = (str2 == string.Empty) ? this.label2.Text : str2;
}
これはこれを行うための適切な方法ではありませんか?アプリの終了中にUIの更新を実行しないようにするために、追加する必要があるものはありますか?