Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
14 / 13 / 6
Регистрация: 21.01.2015
Сообщений: 150

Долгая инициализация dll проекта

10.04.2017, 09:59. Показов 2621. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. К проектам часто подключён мой подпроект в виде dll, в котором много компонентов, сама строка initializecomponent() выполняется 3-3.5 секунды. Можно ли проинициализировать её(dll) в отдельном потоке, а потом уже показать пользователю? Вечно пользователи жалуются на первый запуск, что долго. Последующие - уже моментально.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.04.2017, 09:59
Ответы с готовыми решениями:

Можно ли из своего проекта сделать DLL
Собственно вопросики: 1. Как я понял, для инжекта нужно использовать длл. Я могу из своего exe проекта сделать длл, и если да, то как? ...

DLL для проекта - вчера работали, сегодня ошибка
Привет. Написал программу, в которой используются 4 DLL. Программа работала отлично. Сделал установщик, проверил установку - все...

Lenovo G550 долгая инициализация при старте
Ноутбук Lenovo G550. Очень долго загружается БИОС. например ф2 чтоб зайти в биос меню, надо ждать минут 5 если не больше. типа переход...

16
 Аватар для BroDMax
157 / 156 / 104
Регистрация: 01.10.2015
Сообщений: 310
10.04.2017, 10:47
kpNemo, что за нетерпеливые пользователи? Ведь 4 секунды это не долго, да ещё и для первого запуска! Добавьте ProgressBar – я слышал, что он немного успокаивает таких юзеров
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
10.04.2017, 11:32
kpNemo, ну откудаж мы знаем что там у тебя происходит целых 3 секунды? Тут у нас не битва экстрасенсов.
0
14 / 13 / 6
Регистрация: 21.01.2015
Сообщений: 150
10.04.2017, 14:02  [ТС]
BroDMax,для кого 4 секунды, а сам проект стартует минимум 30 сек, общий. К которому ещё подключены около 15 других проектов. Полезь поменяй ради "попробовать" - себе дороже. Прогрес бар не успокаивает никого, не знаю где вы такое слышали. Это миф.

На средней машине 3-3.5 сек старта, на очень слабой может и все 30. Причём первый раз, после того как длль загружена в память - повторная загрузка моментальна.

aquaMakc, "сама строка initializecomponent()" - вы не знаете, что там может происходить? Инициализация сотен, а то и тысяч компонентов. Представьте контрол девекспресса, в который ещё добавить функционала.

Повторю, можете подскажете. Вопрос в чём, не будет ли ругани, что инициализация проекта была в другом потоке? А после вызов с основного?
0
Эксперт .NET
 Аватар для Rius
13164 / 7724 / 1679
Регистрация: 25.05.2015
Сообщений: 23,527
Записей в блоге: 14
10.04.2017, 14:05
Цитата Сообщение от kpNemo Посмотреть сообщение
вы не знаете, что там может происходить? Инициализация сотен, а то и тысяч компонентов.
Говнокод 99% детектед.

Ругань по поводу потоков будет. Если это элементы GUI, переделайте его, чтобы все контролы не инициализировались сразу.
1
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
10.04.2017, 14:05
Цитата Сообщение от kpNemo Посмотреть сообщение
вы не знаете, что там может происходить?
Цитата Сообщение от kpNemo Посмотреть сообщение
в который ещё добавить функционала
Какого функционала? Повторюсь, экстрасенсов не завезли. Не зная на чём конкретно затык, не видя кода никто ничего вам не подскажет.
0
 Аватар для BroDMax
157 / 156 / 104
Регистрация: 01.10.2015
Сообщений: 310
10.04.2017, 14:14
kpNemo, если речь идет о контролах – то даже отдельный поток не поможет. Первый будет уже требовать ещё не загруженные контролы из второго.

Добавлено через 6 минут
Цитата Сообщение от kpNemo Посмотреть сообщение
На средней машине 3-3.5 сек старта, на очень слабой может и все 30. Причём первый раз, после того как длль загружена в память - повторная загрузка моментальна.
А теперь представьте программу Microsoft Word, например, 2013... Она всё-равно будет загружаться долго на медленной машине, и с этим ничего не поделать. Зато второй раз запустится быстрее.

Добавлено через 2 минуты
Цитата Сообщение от kpNemo Посмотреть сообщение
Прогрес бар не успокаивает никого, не знаю где вы такое слышали. Это миф.
Это ирония.
0
10.04.2017, 14:15

Не по теме:

Цитата Сообщение от BroDMax Посмотреть сообщение
Это ирония.
А если прогрессбар из котиков?

0
Эксперт .NET
 Аватар для Rius
13164 / 7724 / 1679
Регистрация: 25.05.2015
Сообщений: 23,527
Записей в блоге: 14
10.04.2017, 14:17
Цитата Сообщение от BroDMax Посмотреть сообщение
Это ирония.
Не совсем. Успокаивает прогресс бар, который достоверно показывает оставшееся время до завершения операции.
0
 Аватар для BroDMax
157 / 156 / 104
Регистрация: 01.10.2015
Сообщений: 310
10.04.2017, 14:21

Не по теме:

Цитата Сообщение от aquaMakc Посмотреть сообщение
А если прогрессбар из котиков?
Тогда люди будут сознательно закрывать приложение, чтобы ещё раз на них посмотреть



Добавлено через 1 минуту
Rius, Вы правы. Но говоря это, я имел ввиду прогресс бар без указания диапазонов, не указал это
0
14 / 13 / 6
Регистрация: 21.01.2015
Сообщений: 150
10.04.2017, 14:49  [ТС]
Rius, Чего сразу оскорблениями кидаться, если сути проекта не знаете? Неприятно.

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

Трудность в том, что подключён девекспресс(типа ворда и екселя) с расширенным доп функционалом, а на инициализацию ихнего контрола и уходит много-много времени, там у них свои технологии, и разбить инициализацию ихних компонентов уж никак не представляется возможным.

Ребят, я не ищу стёба, я ищу ответ на вопрос. Ни разу ещё не срали так мне в тему, эти насмешки, противно. Спасибо, сам уже разберусь. Тему пожалуйста удалите. Это уже срач.
0
 Аватар для BroDMax
157 / 156 / 104
Регистрация: 01.10.2015
Сообщений: 310
10.04.2017, 14:52
kpNemo, Вы сами ответили на свой вопрос: "на инициализацию ихнего контрола и уходит много-много времени, там у них свои технологии, и разбить инициализацию ихних компонентов уж никак не представляется возможным.". Потоки не помогут – как Вы себе это представляете? Так бы и Word загружался бы за 3 секунды на медленном компьютере... Логично ведь?
0
14 / 13 / 6
Регистрация: 21.01.2015
Сообщений: 150
10.04.2017, 15:07  [ТС]
BroDMax, в этом вопрос и заключался. Спасибо. Это как загрузили ворд, а там есть окошко - редактор формул(я утрирую), вы его вызвали - и 3 секунды открывается окно, первый раз. Потом то длль в памяти висит, и повторное открытие окна - моментально. Но часто на демонстрации как, собирается куча людей, ноутбук, проектор. Требуют вот прямо на ноуте запустить при них. И первый запуск - сразу жалобы на этот долгий запуск, особенно если на ноуте 2 гб оперативки и какой-то целерон. Вот и подумал, может подскажут, как провести при запуске программы инициализацию втихую, ведь этот компонент запускают не сразу, а там пока перейдут на вкладку, пока откроют список, нужный скрипт... У меня так загрузка огромного формуляра(бывает 1000+ человек, может и больше, а там связей между таблицами - с ума сойти) идёт сразу после запуска программы, но там что - нужное втихую подгружается, выбирается, сортируется. Это всего-то модель данных, которая нужна где-то как раз секунд через 30 после запуска программы, вот модель эта и формируется в отдельных потоках от 10 до 30 сек.
0
Эксперт .NET
 Аватар для Rius
13164 / 7724 / 1679
Регистрация: 25.05.2015
Сообщений: 23,527
Записей в блоге: 14
10.04.2017, 15:15
Цитата Сообщение от kpNemo Посмотреть сообщение
Rius, Чего сразу оскорблениями кидаться, если сути проекта не знаете? Неприятно.
Да видел я уже эту суть много раз: накидать 100500 контролов на одной форме, получив километровый листинг в дизайнере и в самое классе формы. Вот пример такого же. А потом жаловаться, что грузится что-то слишком долго...
Цитата Сообщение от kpNemo Посмотреть сообщение
там у них свои технологии, и разбить инициализацию ихних компонентов уж никак не представляется возможным.
Откажитесь от того, что вам не подконтрольно. Не рассматривали?

Цитата Сообщение от kpNemo Посмотреть сообщение
И первый запуск - сразу жалобы на этот долгий запуск, особенно если на ноуте 2 гб оперативки и какой-то целерон. Вот и подумал, может подскажут, как провести при запуске программы инициализацию втихую
Есть способы: https://professorweb.ru/my/csh... l7/7_7.php

Данные из БД можно подгружать в отдельном потоке. Главное не касаться контролов GUI.
0
 Аватар для BroDMax
157 / 156 / 104
Регистрация: 01.10.2015
Сообщений: 310
10.04.2017, 15:21
kpNemo, вот Вы и рассказали, что требуется, как и просил aquaMakc. Во-первых, можно попытаться инициализировать при открытии всего приложения, чтобы в процессе работы не мешало.. Во-вторых, теоретически, можно попытаться в параллельном потоке начать инициализацию dll. Вопрос в другом: что если не успеет? Будет ошибка, вызов незагруженных компонентов. Но это всё в теории, на практике опыта не было.
0
Эксперт .NET
 Аватар для Rius
13164 / 7724 / 1679
Регистрация: 25.05.2015
Сообщений: 23,527
Записей в блоге: 14
10.04.2017, 15:35
Лучший ответ Сообщение было отмечено kpNemo как решение

Решение

Цитата Сообщение от BroDMax Посмотреть сообщение
Будет ошибка, вызов незагруженных компонентов.
Можно продолжать инициализацию UI при завершении только всех параллельных задач инициализации кода не-UI.

Добавлено через 1 минуту
Ещё пробовал в отдельном потоке загружать все библиотеки через Assembly.Load, чтобы в показу формы уже всё было загружено.
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
10.04.2017, 20:36
Лучший ответ Сообщение было отмечено kpNemo как решение

Решение

kpNemo, посмотри эти ссылки - Application Startup Time (статья про WPF, но применима и к Windows Forms) и 12 Tips To Speed-up Your Windows Forms Applications.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2017, 20:36
Помогаю со студенческими работами здесь

Очень долгая сборка проекта с использованием webpack
Всем привет, когда использовал systemJs для сборки все было отлично, но все файлы были открытыми и я перешел на webpack . Но теперь бандл...

Долгая загрузка управляемой DLL
Дано: 1. DLL, содержащая WPF-окна. 2. С++ приложение, содержащее файл, компилируемый с опцией \clr, в котором создаётся класс окна из...

Инициализация проекта
Конечно довольно интересно обсуждать программы и методики реализации. Но вот мне кажется что самое сложное, это начало. Есть тема, есть...

При компиляции DLL-проекта не создается DLL-ка
Добрый день. создал в Visual Studio 2010 проект C+= типа DLL. В файл dllmain.cpp вставил вот такой код: // test.cpp: определяет...

Qt и BASS.dll. Инициализация
Здравствуйте. Решил я начать учиться работать с Qt. И думаю было бы хорошей идеей создать простенький плеер с использованием достаточно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru