Вниз
Скачать: CL | DM;

Как создать форму в паралельном потоке?   Найти похожие ветки 

← →
Godness   (2007-01-23 20:08) [0]

Привет народ. Есть такая проблема - нужно создать форму в паралельном потоке, а потом ее использовать в основном. Но беда в том, что из основного потока не получается обратится к своиствам созданной формы - выдает "handle invalid"

//вот примерно так - поток где создается форма
procedure Thread.Execute;
begin
  MyForm := MyForm.Create(nil);
end;

//а уже в основном коде программы
 MyForm.Parent := MainForm.Panel1; и т.д. но тут и вылетает ошибка

Как с этим бороться?


← →
i-am-vladko ©   (2007-01-23 21:31) [1]

nikak - ShowModal


← →
Kolan ©   (2007-01-23 21:43) [2]

Ненадо интерфейс делать многопоточным.
Создай ее в осно потоке. Если надо из. доп, то попроси осн. поток создать ее&#133


← →
tesseract ©   (2007-01-23 22:22) [3]

Все обращения к VCL ( да и окнам вообще ) должны осуществляться, только в основном потоке. Дополнительные потоки не имеют стандартного цикла обработки сообщений.

Для обращения из потока к окнам необходимо использовать synchronize.


← →
Godness   (2007-01-24 10:17) [4]

Плохо - просто мне нужно ускорить работу приложения, которое и без того тормознутое. Это помогло бы весьма! Ладно, - будем искать... :)


← →
tesseract ©   (2007-01-24 10:31) [5]


> Плохо - просто мне нужно ускорить работу приложения, которое
> и без того тормознутое


Логику вынеси в поток. И потом обновляй форму. Всегда так делал и проблем не было. Использовал сообщения и крит секции.


← →
GrayFace ©   (2007-01-24 11:18) [6]

tesseract ©   (23.01.07 22:22) [3]
Все обращения к VCL ( да и окнам вообще ) должны осуществляться, только в основном потоке.

Вовсе нет. Доп поток может и создавать окна (хотя обычно лучше этого не делать), а уж обращаться к окнам - всегда пожалуйста.

tesseract ©   (23.01.07 22:22) [3]
Для обращения из потока к окнам необходимо использовать synchronize.

Или посылать сообщения.


← →
Loginov Dmitry ©   (2007-01-24 14:40) [7]

> Как создать форму в паралельном потоке?


с помощью WinAPI


← →
tesseract ©   (2007-01-24 14:50) [8]


> а уж обращаться к окнам - всегда пожалуйста.


Про обращаться я ничего не говорил. Просто разрушить таким образом очередь сообщений - вполне реально.


← →
GrayFace ©   (2007-01-26 17:49) [9]

tesseract ©   (24.01.07 14:50) [8]
Просто разрушить таким образом очередь сообщений - вполне реально.

Разрушить очередь сообщений - это как?


← →
evvcom ©   (2007-01-26 17:57) [10]

> [7] Loginov Dmitry ©   (24.01.07 14:40)
> с помощью WinAPI

В WinAPI нет форм. Там окна.


← →
Loginov Dmitry ©   (2007-01-26 18:26) [11]

> В WinAPI нет форм. Там окна.


Форма - тоже понятие весьма абстрактное.


← →
evvcom ©   (2007-01-26 18:46) [12]

> [11] Loginov Dmitry ©   (26.01.07 18:26)
> Форма - тоже понятие весьма абстрактное

На форуме сишников MS - согласен, а на форуме мастеров Дельфи вполне конкретное.



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.032 c
6-1157972778
wezzz
2006-09-11 15:06
2007.02.11
Защита почтовых сообщений.


2-1169615914
ashnurov
2007-01-24 08:18
2007.02.11
Как сделать случайный вывод текста


2-1169474414
Mishenka
2007-01-22 17:00
2007.02.11
Как отловить событие наведения и увода указателя мыши с формы?


4-1159303917
Dmitry_177
2006-09-27 00:51
2007.02.11
Борландовские сообщения CM_MOUSEENTER и CM_MOUSELEAVE в API


15-1169475091
ert
2007-01-22 17:11
2007.02.11
У кого есть готовый программа




   Наверх