Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];

Вниз

Многопоточность 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.01 c
14-39024
Romkin
2004-01-27 14:22
2004.02.13
Переворот текста


8-38961
SergeyDon
2003-10-11 15:35
2004.02.13
ламерский вопрос: чем отличается использование OpenGL от DirectX?


14-39008
Думкин
2004-01-27 06:31
2004.02.13
С днем рождения! 27 января.


3-38743
DelphiNew
2004-01-21 13:50
2004.02.13
список таблиц


14-39085
kor@l
2004-01-22 19:43
2004.02.13
Message





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский