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(其进度报告事件必须在一定程度上被滥用以实现所需的行为)时,它毫无怨言地运行。