Зависание при вызове OpenFileDialog !!!
От: Аноним  
Дата: 09.06.10 13:46
Оценка:
В общем, как понятно из названия, программа зависает при вызове OpenFileDialog. Приложение на WinForms, OpenFileDialog вызывается в OnCreateControl. При открытии OpenFileDialog, он отображает файлы из директории указанной в свойстве InitialDirectory, и виснет. После этого можно двигать мышкой, но система виснет намертво(только перезагрузка по Reset) Честно говоря, вижу такое в первый раз. Система Windows 7, программа запускается в VisualStudio 2010, писалась на NET Framework4. С самой системой ни когда ни каких проблем не наблюдалось. Виснет не каждый раз, но периодически. Какую либо закономерность выявить не удалось.
Соответственно, почему виснет Как можно посмотреть на каком этапе происходит зависание
Re: Зависание при вызове OpenFileDialog !!!
От: samius Япония http://sams-tricks.blogspot.com
Дата: 09.06.10 13:54
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В общем, как понятно из названия, программа зависает при вызове OpenFileDialog.

Поток, из которого вызывается диалог помечен как STA?
Re[2]: Зависание при вызове OpenFileDialog !!!
От: Аноним  
Дата: 09.06.10 14:12
Оценка:
Здравствуйте, samius, Вы писали:

S>Здравствуйте, Аноним, Вы писали:


А>>В общем, как понятно из названия, программа зависает при вызове OpenFileDialog.

S>Поток, из которого вызывается диалог помечен как STA?

ДА !!!
Re: Зависание при вызове OpenFileDialog !!!
От: Аноним  
Дата: 10.06.10 12:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В общем, как понятно из названия, программа зависает при вызове OpenFileDialog. Приложение на WinForms, OpenFileDialog вызывается в OnCreateControl. При открытии OpenFileDialog, он отображает файлы из директории указанной в свойстве InitialDirectory, и виснет. После этого можно двигать мышкой, но система виснет намертво(только перезагрузка по Reset) Честно говоря, вижу такое в первый раз. Система Windows 7, программа запускается в VisualStudio 2010, писалась на NET Framework4. С самой системой ни когда ни каких проблем не наблюдалось. Виснет не каждый раз, но периодически. Какую либо закономерность выявить не удалось.

А>Соответственно, почему виснет Как можно посмотреть на каком этапе происходит зависание

Кстати отловил ещё один подобный глюк. Установил НЕ верный формат в DateTime.ToString(stringFormat) и при запуске приложение повесило всю систему. Похоже VS 2010 плохо справляется с исключениями возникающими в RunTime. После перезагрузки, в этом-же месте, студия всё же отловила UnhandledException. В общем MS опять облажалась
Re: Зависание при вызове OpenFileDialog !!!
От: HotDog Швейцария www.denebspace.com
Дата: 10.06.10 12:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В общем, как понятно из названия, программа зависает при вызове OpenFileDialog.

У меня такое было если директорий указанный в InitialDirectory не существует или нет к нему доступа.
Re[2]: Зависание при вызове OpenFileDialog !!!
От: HotDog Швейцария www.denebspace.com
Дата: 10.06.10 12:47
Оценка: -1
Здравствуйте, Аноним, Вы писали:

А>Установил НЕ верный формат в DateTime.ToString(stringFormat)..... В общем MS опять облажалась


Если на полном ходу выпрыгнуть из поезда и убиться, то виноват будет несомненно производитель поезда.
Re[3]: Зависание при вызове OpenFileDialog !!!
От: Аноним  
Дата: 10.06.10 12:49
Оценка:
Здравствуйте, HotDog, Вы писали:

HD>Здравствуйте, Аноним, Вы писали:


А>>Установил НЕ верный формат в DateTime.ToString(stringFormat)..... В общем MS опять облажалась


HD>Если на полном ходу выпрыгнуть из поезда и убиться, то виноват будет несомненно производитель поезда.


Смешно. Но в VS 2005 такие глюки свободно отлавливаются. Специально проверял
Re: Зависание при вызове OpenFileDialog !!!
От: Sinix  
Дата: 10.06.10 12:54
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Соответственно, почему виснет

Пальцем в небо: антивирус? Студия запущена с правами администратора?
Вариант 2 — крайняя нехватка памяти.

A> Как можно посмотреть на каком этапе происходит зависание

Event logs (мааленький, но шанс, что какой-то сервис на что-нить пожалуется).
Re: Зависание при вызове OpenFileDialog !!!
От: Pavel Dvorkin Россия  
Дата: 13.06.10 12:11
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В общем, как понятно из названия, программа зависает при вызове OpenFileDialog. Приложение на WinForms, OpenFileDialog вызывается в OnCreateControl. При открытии OpenFileDialog, он отображает файлы из директории указанной в свойстве InitialDirectory, и виснет.


Хм. OpenFileDialog — это класс, а виснет, как я предполагаю, ShowDialog ? Если да, то имей в виду, что ShowDialog без параметра использует в качестве окна — владельца текущее окно, а оно на этапе OnCreateControl еще до конца не сконструировано. Явного запрета на такое действие нет, тем не менее я бы поостерегся в WM_CREATE создавать диалоги от имени этого окна.

Попробуй вызвать ShowDialog(owner), передав какое-то уже сконструированное окно.
With best regards
Pavel Dvorkin
Re[2]: Зависание при вызове OpenFileDialog !!!
От: Аноним  
Дата: 14.06.10 10:47
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Аноним, Вы писали:


А>>В общем, как понятно из названия, программа зависает при вызове OpenFileDialog. Приложение на WinForms, OpenFileDialog вызывается в OnCreateControl. При открытии OpenFileDialog, он отображает файлы из директории указанной в свойстве InitialDirectory, и виснет.


PD>Хм. OpenFileDialog — это класс, а виснет, как я предполагаю, ShowDialog ? Если да, то имей в виду, что ShowDialog без параметра использует в качестве окна — владельца текущее окно, а оно на этапе OnCreateControl еще до конца не сконструировано. Явного запрета на такое действие нет, тем не менее я бы поостерегся в WM_CREATE создавать диалоги от имени этого окна.


PD>Попробуй вызвать ShowDialog(owner), передав какое-то уже сконструированное окно.


ShowDialog действительно вызывается в OnCreateControl. Но этот метод вызывается уже после того как окно сконструировано. Вроде По крайней мере в MSDN написано : "Метод OnCreateControl вызывается при первом создании элемента управления".
Re[3]: Зависание при вызове OpenFileDialog !!!
От: Аноним  
Дата: 14.02.11 01:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Здравствуйте, Аноним, Вы писали:


А>>>В общем, как понятно из названия, программа зависает при вызове OpenFileDialog. Приложение на WinForms, OpenFileDialog вызывается в OnCreateControl. При открытии OpenFileDialog, он отображает файлы из директории указанной в свойстве InitialDirectory, и виснет.


PD>>Хм. OpenFileDialog — это класс, а виснет, как я предполагаю, ShowDialog ? Если да, то имей в виду, что ShowDialog без параметра использует в качестве окна — владельца текущее окно, а оно на этапе OnCreateControl еще до конца не сконструировано. Явного запрета на такое действие нет, тем не менее я бы поостерегся в WM_CREATE создавать диалоги от имени этого окна.


PD>>Попробуй вызвать ShowDialog(owner), передав какое-то уже сконструированное окно.


А>ShowDialog действительно вызывается в OnCreateControl. Но этот метод вызывается уже после того как окно сконструировано. Вроде По крайней мере в MSDN написано : "Метод OnCreateControl вызывается при первом создании элемента управления".



Я у себя решил проблему с зависанием таким образом : установил начальную директорию и имя файла. Например, так :

openFileDialog1->InitialDirectory = "";
openFileDialog1->FileName = "";
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.