Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[35.175.121.135] |
|
Сообщ.
#1
,
|
|
|
Программа на VB.NET имеет загружается около 2-3 минут, т.к. подгружает множество баз данных и имеет длительную процедуру инициализации, а также подключает массивные DLL-файлов. Чтобы скрыть эффект «зависания» включен в Sub Main запускаю в новом потоке заставку с прогрессбаром:
Dim t = New Thread(New ThreadStart(AddressOf SplashStart)) t.Start() Public Sub SplashStart() Application.Run(New frmSplash) ‘Окно заставки End Sub Тем не менее проблема зависания решилась только наполовину: окно заставки появляется только после загрузки всех DLL, а это почти минута. Как заставить прогрессбар появиться сразу после запуска пользователем программы? |
Сообщ.
#2
,
|
|
|
Никогда не сталкивался с такой долгой загрузкой DLL, но если процесс из-за них долго грузится, то стоит думать, заставку нужно пихать не в отдельный поток, а в отдельный процесс.
Могу предложить такой вариант: 1. Создать дополнительный проект MyApplicationLoader. При загрузке он отображает лого, потом создает файл loading.tmp (чтоб не мельтешил, ему можно выставить атрибут "скрытый") и вешает на него FileSystemWatcher, после чего запускает основной экзешник программы. 2. Назначить главному окну программы обработчик события Load, в котором удаляется loading.tmp 3. Когда загрузчик обнаруживает удаление файла, он закрывается. Махинации с файлом можно попробовать заменить перехватом консольного вывода (см. класс System.Diagnostics.Process). |