Форум: "Система";
Текущий архив: 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