【问题标题】:Is Me.IsHandleCreated a reliable indicator to determine whether the form has been closed?Me.IsHandleCreated 是确定表单是否已关闭的可靠指标吗?
【发布时间】:2023-03-22 08:20:01
【问题描述】:

我发现它似乎是,但我不明白这个属性的内部运作,以肯定知道。当用户关闭表单时,该属性似乎可靠地返回 False。

当我有后台工作人员运行时,我会使用它,并且在进行任何进一步处理之前,我会在完成的事件中检查此属性。

【问题讨论】:

  • 不完全是,当窗口还没有创建时它也是 False。您只真正关心 IsDisposed。检查this answer
  • Hans,我的应用程序中的后台进程仅在用户单击按钮时才会启动,因此在创建表单之前我不可能检查此属性。如果我尝试从后台工作人员调用我的表单上的方法并且表单已关闭(但尚未处理)是“在创建窗口句柄之前无法在控件上调用 Invoke 或 BeginInvoke。”。检查 ishandlecreated 在 me.isdisposed 没有的情况下完美工作

标签: vb.net formclosing


【解决方案1】:

我不会用那个。同意 Hans Passant,我会使用 Me.IsDisposed,因为它会检查以确保它已打开,然后关闭并释放内存。

【讨论】:

  • Me.IsDisposed 的问题是表单关闭后返回true。它不会在垃圾回收之后立即处理,对吧?
  • "当此属性返回 true 时,该控件被释放,并且不能再作为有效的 Windows 控件被引用。即使控件的实例被释放,它仍然保留在内存中,直到它通过垃圾收集从内存中删除。” -MSDN
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 2012-08-23
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多