Как предотвратить утечку ресурсов при использовании диалога открытия / сохранения файла в c # - PullRequest
2 голосов
/ 21 сентября 2011

мы используем диалог сохранения / opn файла в нашем настольном приложении (C #).Когда мы открываем диалоговое окно в первый раз, маркеры увеличиваются на 100. После закрытия диалога маркеры не уменьшаются.Со следующего раза дескрипторы увеличиваются на 10 или около того и уменьшаются на 2 до 4.

Мы попытались уменьшить дескрипторы, вызвав dispose и сделав его нулевым.А также попробовал с использованием блока.Но никто из них не решил проблему.

Не могли бы вы рассказать мне об этом?Или мы можем использовать любой пользовательский элемент управления или около того

Пожалуйста, советуйте по этому

Заранее спасибо

код: код

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();
    }
}

1 Ответ

6 голосов
/ 21 сентября 2011

Много кода загружается в ваш процесс, когда вы открываете диалог оболочки.Все обработчики расширения оболочки установлены на вашем компьютере.Код вы не написали.Вы можете увидеть, как они загружаются в окне «Вывод», когда вы отметили опцию «Включить отладку неуправляемого кода» на вкладке «Проект + Свойства», вкладка «Отладка».

Работа этих обработчиков расширений оболочки ведет себя неправильно и утечка ресурсов, безусловно, не редкость.Вы можете использовать утилиту автозапуска SysInternals, чтобы отключить их.Начните с тех, которые не написаны Microsoft.

...