На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Заставка перед загрузкой DLL , нейтрализовать зависание
    Программа на VB.NET имеет загружается около 2-3 минут, т.к. подгружает множество баз данных и имеет длительную процедуру инициализации, а также подключает массивные DLL-файлов. Чтобы скрыть эффект «зависания» включен в Sub Main запускаю в новом потоке заставку с прогрессбаром:

    ExpandedWrap disabled
      Dim t = New Thread(New ThreadStart(AddressOf SplashStart))
      t.Start()
       
          Public Sub SplashStart()
              Application.Run(New frmSplash) ‘Окно заставки
          End Sub


    Тем не менее проблема зависания решилась только наполовину: окно заставки появляется только после загрузки всех DLL, а это почти минута.
    Как заставить прогрессбар появиться сразу после запуска пользователем программы?
      Никогда не сталкивался с такой долгой загрузкой DLL, но если процесс из-за них долго грузится, то стоит думать, заставку нужно пихать не в отдельный поток, а в отдельный процесс.

      Могу предложить такой вариант:
      1. Создать дополнительный проект MyApplicationLoader. При загрузке он отображает лого, потом создает файл loading.tmp (чтоб не мельтешил, ему можно выставить атрибут "скрытый") и вешает на него FileSystemWatcher, после чего запускает основной экзешник программы.
      2. Назначить главному окну программы обработчик события Load, в котором удаляется loading.tmp
      3. Когда загрузчик обнаруживает удаление файла, он закрывается.

      Махинации с файлом можно попробовать заменить перехватом консольного вывода (см. класс System.Diagnostics.Process).
      Сообщение отредактировано: F.Phoenix -
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0161 ]   [ 16 queries used ]   [ Generated: 29.03.24, 09:47 GMT ]