Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.11;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.068 c
2-1169565923
Альфи
2007-01-23 18:25
2007.02.11
Иконки


15-1169076303
DeadMeat
2007-01-18 02:25
2007.02.11
DevExpress


15-1169101890
Карелин Артем
2007-01-18 09:31
2007.02.11
Как у вас организовано управление проектом в команде?


2-1169708131
Сергей С.
2007-01-25 09:55
2007.02.11
File not found *.dcu


6-1156746436
vodvorezlaya
2006-08-28 10:27
2007.02.11
Создание собственного Proxy сервера





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский