Главная страница
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.013 c
1-36175
Le!
2002-12-02 01:53
2002.12.12
Формы!


1-36248
maSESter
2002-11-30 23:06
2002.12.12
Как создать BAK file?


7-36450
EleKtroNik
2002-10-06 18:46
2002.12.12
Hook на клаву


3-36029
Fran
2002-11-23 17:20
2002.12.12
Увеличивается Number of attachments


14-36364
Bodom
2002-11-21 12:25
2002.12.12
Yaffil