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

Вниз

Потоки   Найти похожие ветки 

 
Volodya_   (2004-03-25 13:40) [0]

Мне нужно выполнить 1 процедуру в отдельном потоке, я делаю так:
hThread := CreateThread(nil,0,@sendthread,nil,0,ThreadID);
Потом в функции sendthread мне нужно вызвать форму, как это правильно сделать?


 
Digitman ©   (2004-03-25 14:21) [1]


> в функции sendthread мне нужно вызвать форму


зачем ? что мешает вызвать ту же форму в основном потоке ?


 
Volodya_   (2004-03-25 15:24) [2]

в основном потоке этого делать немогу


 
Cobalt ©   (2004-03-25 16:10) [3]

И что будет делать ваша форма?


 
Volodya_   (2004-03-25 16:22) [4]

ну будет например выводится лог ошибок ...


 
BiN ©   (2004-03-25 16:33) [5]

Если ты используешь vcl, то не экономь на Classes (используй TThread и иже с ним)


 
Volodya_   (2004-03-25 18:26) [6]

получается я в своём потоке не могу вызвать другую форму?


 
Cobalt ©   (2004-03-25 18:33) [7]

Библиотека VCL не является потокобезопасной.


 
Volodya_   (2004-03-25 18:39) [8]

Тогда как узнать что мой поток отработал?


 
Cobalt ©   (2004-03-25 19:32) [9]

У вас, видимо, кризис в архитектуре программы.
Лучше расскажите задачу полностью.


 
Volodya_   (2004-03-25 19:55) [10]

Есть форма для отправки почты. Я хочу в отдельном потоке запускать процедуру по отправке или получении почты, для того чтобы в то время когда отправляется почта я мог просматривать редактировать и т.д. После того ка почта отправлена, хочу выводить результа отправки, например сколько отправлено, куда, ошибки и т.д. Для этого создаю форму на которую бросаю компонент memo и туда записываю результат, вот так


 
Cobalt ©   (2004-03-25 21:29) [11]

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


 
GanibalLector ©   (2004-03-26 01:48) [12]

>Потом в функции sendthread мне нужно вызвать форму, как это правильно сделать?
Из потока никак!!!НЕЛЬЗЯ обращаться из потока к оконным контролам.Лично я бы посоветовал в потоке передать сообщение,а в обработчике сообщения уже и творить что-нибудь!

>Тогда как узнать что мой поток отработал?
WaitForMultipleObjects с параметром Infinite


 
Digitman ©   (2004-03-26 08:21) [13]


> в то время когда отправляется почта я мог просматривать
> редактировать


> в основном потоке этого делать немогу


ты противоречишь сам себе

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



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

Форум: "WinAPI";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.035 c
1-1083076625
Татьяна
2004-04-27 18:37
2004.05.16
Динамический массив


11-1069715731
APXi
2003-11-25 02:15
2004.05.16
Подскажите почему не работает? Applet.OnMessage


14-1082612484
vidiv
2004-04-22 09:41
2004.05.16
Задачи по асму...


1-1083315265
ikivio
2004-04-30 12:54
2004.05.16
Шифровка файлов с помощью CryptoApi


7-1080736865
sunfl
2004-03-31 16:41
2004.05.16
одновременное нажатие нескольких клавиш





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