OpenFileDialog ограничивает доступную память - PullRequest
0 голосов
/ 30 марта 2012

При выполнении следующего кода:

OpenFileDialog dialog = new OpenFileDialog();
DialogResult result = dialog.ShowDialog();
string filename = "";
if (result == DialogResult.OK)
{
     filename = dialog.FileName;
     //create a new Thread and read the file.
}
else
{
     return;
}

Я сталкиваюсь со странным поведением памяти: использование памяти очень быстро увеличивается до 710 МБ, затем оно начинает перемещаться побайтово вверх и внизоколо 710 МБ, и, наконец, я получаю исключение OutOfMemoryException.

Но, если я запускаю код без OpenFileDialog, просто жестко запрограммировав путь к файлу:

string filename = "_complete_file_path_here";
//create a new Thread and read the file.

, он будет работать без каких-либопроблема: до 840 МБ памяти без раздумий идет, и файл читается правильно.

Есть идеи или отзывы?

1 Ответ

0 голосов
/ 30 марта 2012

Эта проблема может быть вызвана неправильным расширением оболочки.Используйте Process Explorer или выходные данные отладчика, чтобы проверить, какие библиотеки DLL загружены в ваш процесс, когда вы используете диалог открытия файла.Если вы обнаружите что-либо подозрительное, попробуйте удалить соответствующее программное обеспечение.(Принтеры по какой-то причине часто являются виновниками).

Причина в том, что диалог открытия файла загружает расширения оболочки Windows Explorer, и, к сожалению, многие из сторонних программ содержат ошибки.

...