C# 尽管进行了多次健全性检查,但在关闭时调用句柄错误

C# 尽管进行了多次健全性检查,但在关闭时调用句柄错误,c#,winforms,invoke,C#,Winforms,Invoke,我正在使用这个小实用程序函数: public static void Invoke(Control control, Action method) { if (control.InvokeRequired) { if (control.IsDisposed || !control.IsHandleCreated || !control.Created) return; control.Invoke(method);

我正在使用这个小实用程序函数:

public static void Invoke(Control control, Action method)
{
    if (control.InvokeRequired)
    {
        if (control.IsDisposed || !control.IsHandleCreated || !control.Created)
            return;
        control.Invoke(method);
    }
    else
        method();
}
尽管进行了所有这些健全性检查,但当我关闭应用程序时,错误调用始终会产生以下错误:

Invoke or BeginInvoke cannot be called on a control until the window handle has been created.

这一点,尽管有一个明确的检查,看看是否处理创建。。。我还能做些什么呢?

通读其中的调用部分。你所遇到的问题几乎肯定是由于在if(…)返回之间控制消失;调用正在做它的事情。

这确实很有帮助。当我将调用的所有用法替换为BackgroundWorker(其进度报告事件必须在一定程度上被滥用以实现所需的行为)时,它毫无怨言地运行。