Главная страница
    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.039 c
1-1083004080
Nvart
2004-04-26 22:28
2004.05.16
Ошибка при чтении потока


14-1083135450
paul_k
2004-04-28 10:57
2004.05.16
Предлагаю улыбнутся


7-1081422156
race1
2004-04-08 15:02
2004.05.16
add printer


8-1074855255
Andrew ALS
2004-01-23 13:54
2004.05.16
Проблема с цветами в имадж листе


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