|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.03.2014, 20:58 | #1 |
Форумчанин
Регистрация: 20.12.2013
Сообщений: 164
|
Процедура в потоке
Появилась проблема с подвисание программы при выполнении действия, почитал как исправить, посоветовали вывести в отдельный поток данную процедуру, стал копать в этом направлении но ничего не понял толком
Нашел такой код, но не знаю верен ли он Код:
Код:
|
31.03.2014, 21:46 | #2 |
Пользователь
Регистрация: 05.12.2013
Сообщений: 21
|
Код:
NНOGΔΛ MHΣ KΛЖΣTСЯ, 4TO MΣHЯ HΣ ПОНNМΛЮТ :[
|
01.04.2014, 11:43 | #3 |
Форумчанин
Регистрация: 20.12.2013
Сообщений: 164
|
А как быть если процедура которую надо выполнить находится в DLL
|
02.04.2014, 16:40 | #5 |
Форумчанин
Регистрация: 20.12.2013
Сообщений: 164
|
Не, с DLL я знаком, умею загружать, выгружать. Вопрос был как выполнить в потоке процедуру которая находится в DLL?
Выше пример как в самой программе запустить поток, без использования DLL. Получается так: Код:
|
02.04.2014, 20:21 | #6 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Статический импорт является более удобным, а динамический — более гибким. Что лучше, решать вам.
Статическое подключение DLL При старте вашей программы подключенная таким образом функция уже загружена и находится в адресном пространстве программы. Загрузку этих функций выполняет загрузчик исполняемых файлов и производится это при старте программы. Очевидно что такой способ является самым простым, но не оптимальным: 1) Если необходимых программе функций и библиотек много, то процесс их загрузки может занять значительное время 2) Функции будут отнимать оперативную память, причем все и одновременно, хотя программе возможно они не нужны в один и тот же момент времени 3) Если какая-нибудь из необходимых библиотек отсутствует, то загрузка программы станет невозможна, т.е. таким образом невозможно реализовать, например, механизм плагинов. Динамическое подключение DLL Недостатков статической лишена динамическая. Происходит только тогда, когда она нужна. Выгрузить библиотеку из памяти также можно в любой момент времени. Загрузка библиотеки происходит по вызову функции LoadLibrary, которая принимает в качестве параметра имя библиотеки. После загрузки библиотеки, адреса каждой нужной функции можно получить с помощью функции GetProcAddress, которой нужно сообщить выданный первой функцией обработчик и имя функции. |
02.04.2014, 20:46 | #7 |
Пользователь
Регистрация: 29.03.2014
Сообщений: 26
|
А что в DLL разве нельзя создать поток?!
Отладка - это процесс осознания того, что программа делает только то, что ты написал, а не то, что ты хотел написать.
|
02.04.2014, 21:47 | #8 |
Форумчанин
Регистрация: 20.12.2013
Сообщений: 164
|
|
03.04.2014, 09:03 | #9 |
Пользователь
Регистрация: 29.03.2014
Сообщений: 26
|
Я попробовал создать поток в dll на мой взгляд работает, попробуйте сами.
Отладка - это процесс осознания того, что программа делает только то, что ты написал, а не то, что ты хотел написать.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как из метода X в потоке А, вызвать метод Y и чтобы он работал в потоке B ? | lawliet93 | C# (си шарп) | 0 | 09.03.2013 18:16 |
Пауза в потоке | _ZixeL_ | Общие вопросы Delphi | 9 | 27.01.2013 16:02 |
Создание/изменение/удаление файлов в потоке. Мониторинг файлов в потоке. | The Real Kos | Общие вопросы Delphi | 5 | 22.10.2012 23:58 |
Процедура в процедура в C++ Builder | Ecosasha | C++ Builder | 2 | 06.06.2009 17:17 |
TClientSocket в потоке | BlackOmen | Работа с сетью в Delphi | 8 | 27.04.2008 22:19 |