关于C#中并发性的快速问题。 我在我的代码中有以下方法来更新文本框:
public void diag(string text)
{
if (InvokeRequired)
{
Invoke(new Action<string>(diag), text);
}
else
{
tbDiag.Text += text;
}
}
在我的程序中以任意数量的方法调用此方法来报告内容。其中,它在BackgroundWorker的ReportProgress中被调用:这种情况每隔几十毫秒就会发生一次。 如果我在不停止BackgroundWorker的情况下关闭表单(和应用程序),我会收到System.InvalidOperationException,因为TextBox已被处理掉。
有没有办法阻止这个FormClosing事件的处理程序? 取消正在运行的委托或等待其完成将是正常的,只要我能够防止抛出该异常。 我想避免的是必须直接引用代表。
如果已经在其他地方回答过,我道歉。我一直在谷歌搜索无济于事。
谢谢。