2011-05-17 70 views
0

我使用这个小工具功能:调用句柄错误检查

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. 

这,尽管显然有一个检查,看看是否创建句柄...我还能做什么?

回答

2

通过this thread进行深入调查。你遇到的问题几乎可以肯定的是,如果(...)返回之间的控制消失,和Invoke正在做它的事情。

+1

这确实有帮助。当我用BackgroundWorker替换Invoke的所有用法时(它的进度报告事件必须被滥用以达到所需的行为),它会毫无怨言地运行。 – Reinderien 2011-05-24 06:16:21