Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.12;
Скачать: CL | DM;

Вниз

Многопоточность.....   Найти похожие ветки 

 
----   (2002-11-29 18:02) [0]

Есть ДЛЛ. В каждой ДЛЛ лежит форма. Запускаю из главного приложения эти формы. Все нормально работает...до тех пор пока в какой-то форме не начну делать сложные вычисления - тогда все приложение виснет. Брать эти вычисления в отдельной поток - не выход, т.к. исходников к ДЛЛ нет.

Как можно запустить форму из ДЛЛ в отдельном потоке, чтобы не было таких глюков?


 
Cobalt ©   (2002-11-30 01:03) [1]

"запустить форму из ДЛЛ в отдельном потоке" вообще нельзя, т.к. VCL не поддерживает многопоточности (насколько я знаю, до сих пор) Попроси автора ДЛЛ-лок дать тебе исходники, или пусть он хоть вставит туда ProcessMessages.


 
Ihor Osov'yak ©   (2002-11-30 12:18) [2]

2 Cobalt © (30.11.02 01:03)

> "запустить форму из ДЛЛ в отдельном потоке" вообще
можно (в смысле загрузить), независимо от того, на чем она написана, и невзирая на той факт, что VCL немного плохо
дружит с многопоточностью.

Нужно только юзать динамическую загрузку dll и грузить ее уже в рабочем потоке. Еще вариант - если dll написана с расчета работы в многопоточной апликации и она чисто "вычислительного типа", то можно обойтись только вызовом функций dll в отдельном потоке (а длл грузить стандартно).

Еще - если длл написана с рассчета на работу в одном потоке и причем главном (пример - dll с VCL контролами + юзание Application.ProcessMessagess) - то при выносе такой длл в отдельный поток можно нарваться на кучу неприятностей (долго рассказывать).


Зы. Упреждая возражения со стороны Cobalt скажу, что решения с использованием загрузки длл в отдельном потоке использовал не единыжды и успешно...


 
----   (2002-12-02 10:57) [3]

У меня есть менеджер форм (ехе-файл), который работает с формами из dll. Мне нужно загрузить 2 формы (для простоты 2...а вообще больше) из 2 разных dll. Потом я между этими окнами могу свободно переключаться. Но если одна из форм по каким-то причинам виснет(например, длинные вычисления без потоков, ProcessMessagess, либо еще чего), то виснит все приложение. Я бы хотел иметь возможность удалить эту dll (форму) и продолжить работу с остальными окнами.

Как вот ЧТО можно сделать...и главное КАК это можно сделать?



Страницы: 1 вся ветка

Текущий архив: 2002.12.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
8-36295
DarkSimpson
2002-08-13 14:21
2002.12.12
Streaming audio engine


14-36401
Anatoly Podgoretsky
2002-11-21 07:42
2002.12.12
Именинники 21 ноября


14-36379
LexaTyukha
2002-11-21 15:57
2002.12.12
Существует ли QReport Delphi 7


8-36294
Spike_Spike
2002-08-29 04:59
2002.12.12
Please Help!!!


14-36340
Ketmar
2002-11-19 10:14
2002.12.12
WindwBlinds, с.... гадина, в общем! %-)