【发布时间】:2012-11-20 11:17:18
【问题描述】:
我有一个需要执行特定操作的类。根据输入数据,可能会显示一些对话框。这些对话框需要使用父窗口的句柄来调用,以便它们正确居中等。
private IntPtr _parentWindow;
...
System.Windows.Forms.MessageBox.Show(System.Windows.Forms.Control.FromHandle(_parentWindow), "message");
最终关闭父窗体后,我的类的实例仍然存在,_parentWindow 仍然被赋值。
这样做安全吗?或者 GC 会不会因为 _parentWindow 填充了句柄而没有完全处理表单?
【问题讨论】:
-
GC 从不直接处理任何对象。 Handle 不是引用,因此当您显式或隐式调用其 Dispose 方法时,Form 将被释放。