Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > .NET: Общие вопросы > Заставка перед загрузкой DLL |
Автор: Zaharius 03.11.16, 18:10 |
Программа на VB.NET имеет загружается около 2-3 минут, т.к. подгружает множество баз данных и имеет длительную процедуру инициализации, а также подключает массивные DLL-файлов. Чтобы скрыть эффект «зависания» включен в Sub Main запускаю в новом потоке заставку с прогрессбаром: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Dim t = New Thread(New ThreadStart(AddressOf SplashStart)) t.Start() Public Sub SplashStart() Application.Run(New frmSplash) ‘Окно заставки End Sub Тем не менее проблема зависания решилась только наполовину: окно заставки появляется только после загрузки всех DLL, а это почти минута. Как заставить прогрессбар появиться сразу после запуска пользователем программы? |
Автор: F.Phoenix 04.11.16, 12:21 |
Никогда не сталкивался с такой долгой загрузкой DLL, но если процесс из-за них долго грузится, то стоит думать, заставку нужно пихать не в отдельный поток, а в отдельный процесс. Могу предложить такой вариант: 1. Создать дополнительный проект MyApplicationLoader. При загрузке он отображает лого, потом создает файл loading.tmp (чтоб не мельтешил, ему можно выставить атрибут "скрытый") и вешает на него FileSystemWatcher, после чего запускает основной экзешник программы. 2. Назначить главному окну программы обработчик события Load, в котором удаляется loading.tmp 3. Когда загрузчик обнаруживает удаление файла, он закрывается. Махинации с файлом можно попробовать заменить перехватом консольного вывода (см. класс System.Diagnostics.Process). |