【发布时间】:2011-03-21 19:46:15
【问题描述】:
我在 C#、.Net 2.0 中有一些遗留代码,其中有人将 OpenFileDialog 和 SaveFileDialaog 从工具箱拖到表单上。这会导致打开和保存对话框在创建父对话框时被实例化,并一直保留到父对话框关闭。打开/保存表单实际上只在一个地方使用,每个支持文件在父对话框的生命周期内并不总是打开/保存;这对我来说似乎效率低下。 我会做的是:
using (OpenFileDialog openDlg = new OpenFileDialog() )
{
//initialize openDlg...
if (openDlg.ShowDialog() != DialogResult.OK)
{
//handle OK result
}
}
这样,当 using 语句超出范围时,OpenFileDialog 将被释放。除非我遗漏了某些东西,否则资源的快速处理(和更快的垃圾收集)的价值超过了不必在需要时实例化打开/保存文件对话框所节省的少量费用。 即使每次使用它们的父对话框时都使用打开/保存对话框,我认为始终使用它们并没有什么太大的价值。我的问题是我错过了什么吗?始终保持打开/保存对话框是否有更高的效率? 我假设所有其他标准对话框的答案都是相同的:ColorDialog、FolderBrowserDialog 和 FontDialog。
【问题讨论】:
-
我同意你的“我会做什么”部分。由于 Common Dialogs 需要人工交互,我无法想象性能是一个大问题。如果你有足够多的 Common Dialogs 实例,那么 Memory 是个大问题,我会质疑你在做什么。