我们在桌面应用程序(C#)中使用save / opn文件对话框。 当我们第一次打开对话框时,句柄增加100.关闭对话框后,句柄不会减少。从下一次开始,句柄增加10左右,并减少2到4个。
我们尝试通过调用dispose并使其为null来减少句柄。 并尝试使用块。 但他们都没有解决这个问题。
你能告诉我任何解决方法吗?或者我们可以使用任何自定义控件
请就此提出建议
提前致谢
代码: 代码是
SaveFileDialog objSaveDialog = new SaveFileDialog();
try
{
objSaveDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
objSaveDialog.Title = "Save to Text File";
//objSaveDialog.ShowDialog();
DialogResult dlgResult = objSaveDialog.ShowDialog();
objSaveDialog.Dispose();
if (dlgResult == DialogResult.OK)
{
string strSaveFilePath = objSaveDialog.FileName;
if (!string.IsNullOrEmpty(strSaveFilePath))
{
TextWriter myTxtWriter = new StreamWriter(strSaveFilePath, false);
for (int index = 0; index < 10000; index++)
{
myTxtWriter.WriteLine("sample text.....................................");
}
myTxtWriter.Flush();
myTxtWriter.Close();
myTxtWriter.Dispose();
}
}
}
finally
{
if (objSaveDialog != null)
{
objSaveDialog = null;
//((IDisposable)objSaveDialog).Dispose();
}
}
答案 0 :(得分:6)
打开shell对话框时,很多代码都会加载到您的进程中。所有shell扩展处理程序都安装在您的计算机上。代码你没写。当您勾选Project + Properties,Debug选项卡中的“启用非托管代码调试”选项时,您可以在“输出”窗口中看到它们已加载。
让这些shell扩展处理程序出错并泄漏资源肯定并不罕见。您可以使用SysInternals的AutoRuns实用程序来禁用它们。从非Microsoft编写的那些开始。