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

Вниз

Многопоточность MDI приложения   Найти похожие ветки 

 
Евгений   (2003-11-26 10:45) [0]

Программеры добрые подскажите, можно ли сделать MDI приложение многопоточным, если можно, то как?


 
Владислав ©   (2003-11-26 11:33) [1]

Можно. Так же, как и все остальные (не MDI).


 
Digitman ©   (2003-11-26 11:45) [2]

MDI-технология как таковая имеет мало общего с концепцией/механизмами мультипоточности Win32-процесса как такового


 
Евгений   (2003-11-26 15:12) [3]

А где почитать пожно по данному поводу?


 
Digitman ©   (2003-11-26 15:22) [4]


> по данному поводу


по какому поводу ? конкретно ?

в MSDN есть все

ты лучше опиши задачу свою конкретно
под сабжем можно понимать либо все что угодно либо сабж вообще не имеет смысла


 
Евгений   (2003-11-26 15:39) [5]

Описываю что есть: Проложение на основе MDI форм. Если запускаем какую-нибудь длительную по времени операцию в дочерней форме, то все приложение виснит до завершения этой операции. Хотелось бы избавиться от "однозадачности" приложения. (Работа идет с Базой Данных)


 
Digitman ©   (2003-11-26 16:36) [6]

а если бы это не MDI было, как ты считаешь - проблема бы сама собой "рассосалась" ? Т.е. все упирается именно в то, сто - MDI ?

выскажи свои соображения ... будем править ход твоих мыслей в нужное русло)


 
Евгений   (2003-11-26 17:46) [7]

Конечно ничего бы не изменилось. Все упирается не MDI, а как я думаю в то, что на всю программу выделяеться один поток. Другое дело как это исправить, в MDI форме в частности.


 
sniknik ©   (2003-11-26 20:52) [8]

возрадуйся! частное ничем не отличается от общего делай так же как если бы это было не MDI.
или перенеси свой поток в простое приложение (для проверки) и получиш скорее всего то же зависание. и убедишся что MDI тут ни причем.

> что на всю программу выделяеться один поток
глупости, сколько угодно потоков можно сделать, может имел в виду однопоточность VCL?


 
Евгений   (2003-11-27 06:34) [9]

Получаеться, что как бы я не старался - все бестолку? Приложение так и будет подвисать?


 
Digitman ©   (2003-11-27 08:22) [10]


> Евгений



> Конечно ничего бы не изменилось


но ведь ты же упомянул MDI ? всуе, значит ... так надо понимать)


> Получаеться, что как бы я не старался - все бестолку? Приложение
> так и будет подвисать?


что мешает код "длительной по времени операции" сделать циклическим и в тело цикла вставить хотя бы одну строчку Application.ProcessMessages ? Если это не противоречит логике приложения, то позволит "убить сразу 2-х зайцев" : обойтись без доп.код.потоков и "оживить" польз.интерфейс приложения


 
sniknik ©   (2003-11-27 08:40) [11]

Евгений (27.11.03 06:34) [9]
> Получаеться, что как бы я не старался - все бестолку? Приложение так и будет подвисать?
с чего такие выводы? поток однозначно должен размораживать интерфейс программы (так же как и Application.ProcessMessages), если конечно он нормально написан.
а не "шедевр" вроде этого (реально видел под вопросом "почему тормоза")

procedure Thread.DoWork;
begin
//собственно код
end;

procedure Thread.Execute;
Begin
Synchronize(DoWork);
End;

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


 
Евгений   (2003-11-27 11:07) [12]

Вопрос по Application.ProcessMessages. Насколько снизиться производительность программы при использовании этого метода?


 
Digitman ©   (2003-11-27 11:33) [13]


> Насколько снизиться производительность программы при использовании
> этого метода?


"программы" - нинасколько

а вот производительность основного алгоритма, реализованного втой процедуре, где вызывается Application.ProcessMessages, будет уменьшаться настолько, насколько часто будут осуществляться вызовы Application.ProcessMessages


 
Евгений   (2003-11-27 12:00) [14]

БОЛЬШОЕ ВСЕМ СПАСИБО, особенно Digitman и sniknik за подробные разъяснения.



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

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

Наверх




Память: 0.5 MB
Время: 0.018 c
1-38821
Lexandr
2004-02-02 13:39
2004.02.13
RxRichEdit


1-38778
MadGhost
2004-02-04 21:58
2004.02.13
можно ли создать свой курсор мыши, и включить его в приложение?


8-38972
Dmitriy O.
2003-10-14 10:29
2004.02.13
Как узнать какие цвета используются в файле BMP


8-38977
Gabriel
2003-10-12 22:51
2004.02.13
avi - dll


3-38730
Serge12345
2004-01-20 23:36
2004.02.13
ADO+Paradox почему Could not convert varian of type(Null) into Ty