在表格关闭时取消代表(C#)

时间:2014-08-11 01:46:23

标签: c# multithreading delegates invalidoperationexception

关于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事件的处理程序? 取消正在运行的委托或等待其完成将是正常的,只要我能够防止抛出该异常。 我想避免的是必须直接引用代表。

如果已经在其他地方回答过,我道歉。我一直在谷歌搜索无济于事。

谢谢。

0 个答案:

没有答案