3

我正在开发一个 MDI Windows 窗体应用程序。

从欢迎(有点像主页)窗口,用户可以打开特定窗口来添加或编辑实体,例如订单或客户。每个都在其自己的无模式窗口中打开(作为 MDIChild)。在某些情况下添加新记录是在模式窗口中完成的。

我没有明确地在无模式窗口上执行 Dispose()。根据 Debug 期间的检查,当单击表单的 Close 按钮​​时,Designer.cs 文件中的 Dispose() 方法将执行并调用 base.Disposing 方法。我认为该表单确实在单击关闭按钮时被关闭。

对于对话框窗口,我在 using 块中打开它们,据我所知,当 using 块结束时,它将 Dispose 关闭窗口。

那么,我的整体理解和方法是否正确?

我对此进行了谷歌搜索。似乎有很多不同方法的强烈支持者,因此我有点不确定我的方法是否可行。

非常感谢您的澄清。

谢谢并恭祝安康。

4

1 回答 1

0

您在 using 块中有变量吗?你过得很好。除非该类包含任何非托管资源。C# 对话框和表单不是非托管的。C# 中的大多数内容都是托管内存。所以使用应该足够了。

您有一个 using 子句,因此以下内容并不真正适用,但很高兴知道

“当 IDisposables 超出范围时,它们是否不会被丢弃?” 不。如果 IDisposable 对象是可终结的,这不是一回事,那么当它被垃圾回收时,它就会被终结。这可能很快,也可能几乎永远不会。

很多讨论应该可以帮助你在这里获取更多信息

C# USING 关键字 - 何时以及何时不使用它?

我目前的理解是,除非您使用非托管资源,否则如果它决定需要回收内存或程序以稳定状态关闭,则垃圾收集器或程序关闭将处理它。

于 2012-12-21T13:51:44.697 回答