Задержка VB.NET OpenFileDialog на Win7 - PullRequest
       3

Задержка VB.NET OpenFileDialog на Win7

3 голосов
/ 26 сентября 2010

У меня есть winform, VBExpress 2008 с одной кнопкой и этот код за ней, чтобы проиллюстрировать проблему:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)  Handles Button1.Click
OpenFileDialog1.ShowDialog()
MsgBox(OpenFileDialog1.FileName)
End Sub

Когда я выбираю файл (в моем случае маленькие PDF), я получаюдо 6 секунд после выбора файла до перехода к следующему оператору, в этом случае MsgBox.

Если я повторяю выбор этого файла второй раз, я не получаю задержку.Но если я выйду из программы и перезапущу ее, то получу задержку снова (один раз).После того, как первый зависает, кажется, что он зависает примерно от 7 до 9 попыток, и окно говорит «не отвечает» в течение нескольких секунд.У меня нет этой проблемы на Vista или XP.

Если я выбираю один и тот же файл снова и снова, он может зависнуть в 1-й, 2-й и 12-й раз.Закройте программу и повторите попытку, это может быть 1, 3 и 9 раз.Никогда не то же самое - как будто у него заканчиваются ресурсы и очищается кеш.

Я наблюдал за диспетчером задач во время задержки и не вижу ничего необычного.У меня новый компьютер, на котором все работает правильно.Я подумал, что это может быть мой Norton Internet Security, но я отключил его, и это не имело значения.

Может кто-нибудь дать мне подсказку, что может происходить и / или как я могу проследить источник задержки до самого конца?Я перепробовал все, что знаю, чтобы изолировать проблему, и у меня заканчиваются идеи.Я не вижу других сообщений об этой конкретной вещи.

Ответы [ 2 ]

1 голос
/ 26 сентября 2010

На MSDN мне было предложено - отсоединить сетевой кабель и посмотреть, исчезнет ли проблема. Это сделал.

У меня было два сетевых подключения к моему старому ПК, который был выключен. Удалил их и решил проблему.

Итак, теперь вопрос в winforms vb.net, как настроить окно Win7 OpenFileDialog (стандартное окно win explorer), чтобы оно не отображалось или было задержано неактивными сетевыми местоположениями? Или, как вы предотвращаете это в Win7. Я буду исследовать и, если необходимо, повторно опубликовать это отдельно.

Я действительно не хочу распространять свое приложение с предупреждением о том, что, если вы работаете в Win7 и у вас неактивные сетевые расположения, вы получите задержку при выборе файлов.

1 голос
/ 26 сентября 2010

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

Это обработчики расширения оболочки, установленные на вашем компьютере.Плохие могут повлиять на вашу программу неприятными способами, как вы описали в своем вопросе.Используйте утилиту SysInternals AutoRuns, чтобы получить контроль над этим.Начните с отключения тех, которые не были сделаны Microsoft.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...