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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.041 c
2-1169709085
oops
2007-01-25 10:11
2007.02.11
ADONETConnection - куда он делся?


3-1163846329
PEAKTOP
2006-11-18 13:38
2007.02.11
Создание внешнего ключа - глюк ?


2-1169461062
hursand
2007-01-22 13:17
2007.02.11
Edit


15-1169130890
Stanislav
2007-01-18 17:34
2007.02.11
Кто настраивал GPS/GPRS трекеры?


15-1169201986
altex
2007-01-19 13:19
2007.02.11
Защита Приложения.





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