如何确定我的表格 window 是否仍然有效?

How can I determine if my Forms window is still valid?

我有一个 window 从工作线程接收异步事件。有时这些事件在 window 关闭后出现,当我调用 Invoke() 处理事件时,我得到一个异常。

我如何进行测试以确保 window 仍然正常。或者让所有事件在关闭生命周期的某个地方被处理?

谢谢 - 戴夫

您可以在调用调用之前检查IsHandleCreated,以确保表单已创建且未被销毁:

if (this.IsHandleCreated)
{
    //this.Invoke ...
}

属性 returns false 如果表单句柄仍未创建或关闭表单后已销毁。它还可以防止在显示表单之前和创建句柄之前调用 invoke 的错误。

如果出于任何原因您只想关闭表单,您可以查看 IsDisposed 属性。