c# – 在没有立即关闭的情况下处理新表格的正确方法是什么?

c# – 在没有立即关闭的情况下处理新表格的正确方法是什么?,第1张

概述所以在我的应用程序中,我倾向于动态创建表单的新实例,然后使用Form.Show()来显示它们(非模态). private void test_click(object sender, EventArgs e){ var form = new myForm(); form.Show();} 但是,Code Cracker告诉我应该处理这些表格.所以,我用“使用”语句包装它们,但随 所以在我的应用程序中,我倾向于动态创建表单的新实例,然后使用Form.Show()来显示它们(非模态).
private voID test_click(object sender,EventArgs e){    var form = new myForm();    form.Show();}

但是,Code Cracker告诉我应该处理这些表格.所以,我用“使用”语句包装它们,但随后它们在打开后立即关闭.

using (var form = new myForm()){    form.Show();}

我不想使用Form.ShowDialog(),因为在少数情况下我打开只显示报告的新窗口;我不需要它们是模态的.

解决方法 嗯,“代码破解者”似乎是该工具的一个非常合适的术语,它的建议肯定会让你编写破坏你的程序的代码. Golden Rule永远不会相信静态代码分析工具提供的Idisposable建议,他们都没有对代码执行有足够的洞察力.他们永远无法弄清楚哪个dispose()调用完成了工作.

它看不到的是Form类已经知道如何处置它自己.它很容易这样做,当窗口关闭时,对象变得无法使用.当没有窗口时,没有理由继续使用Form对象.这种奢侈品在.NET中并不常见,但肯定受到45年前为Xerox工作的非常聪明的程序员的启发.

您必须记住一条特殊规则,当您使用ShowDialog()显示窗口时,它不会自行处理.这是故意的,它使得检索对话结果风险太大.对ShowDialog()调用使用using语句非常容易,在窗口关闭之前调用不会返回.

总结

以上是内存溢出为你收集整理的c# – 在没有立即关闭的情况下处理新表格的正确方法是什么?全部内容,希望文章能够帮你解决c# – 在没有立即关闭的情况下处理新表格的正确方法是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1242361.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存