如何在c#中使用"打开/保存文件"对话框时防止资源泄漏

Dot*_*ude 2 c# openfiledialog resource-leak

我们在桌面应用程序(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();
    }
}
Run Code Online (Sandbox Code Playgroud)

Han*_*ant 6

打开shell对话框时,很多代码都会加载到您的进程中.所有shell扩展处理程序都安装在您的计算机上.代码你没写.当您勾选Project + Properties,Debug选项卡中的"启用非托管代码调试"选项时,您可以在"输出"窗口中看到它们已加载.

让这些shell扩展处理程序行为不端并泄漏资源肯定并不罕见.您可以使用SysInternals的AutoRuns实用程序来禁用它们.从非Microsoft编写的那些开始.