c# - 无模式窗体的正常关闭和使用 block 中的打开模态窗体。足够的?

标签 c# .net winforms dispose

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

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

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

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

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

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

非常感谢您的说明。

感谢和问候。

最佳答案

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

你有一个 using 子句,所以下面的内容并不适用,但很高兴知道

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

这里有很多讨论可以帮助您获取更多信息

C# USING keyword - when and when not to use it?

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

关于c# - 无模式窗体的正常关闭和使用 block 中的打开模态窗体。足够的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10136070/

相关文章:

c# - 使用 RegEx 将点 (.) 替换为逗号 (,)?

c# - string.Replace 未按预期运行

winforms - 如何右对齐菜单中的快捷键?

c# - DateTime with Hijri Calender - 30/02 总是抛出异常

c# - 围绕枢轴点重复旋转点

C# 在 gecko 浏览器中自动填充输入框

c# - .NET Web Api 2.1 中 Ninject 绑定(bind)的无参数构造函数错误

c# - 为什么我无法在 Razor 页面上获得正确的文本框值?

c# - 用作控制流机制的异常在某些特定场景下是否有效?

c# - 如何测试单击按钮是否使用 NUnitForms 打开新表单?