Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

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

 
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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.052 c
14-1083027022
MPS
2004-04-27 04:50
2004.05.16
Какого пингвина выбрать ???


6-1080421878
Rezya
2004-03-28 00:11
2004.05.16
Перевод Простого сокета в режим перехвата всего трафика


8-1077455594
Iks
2004-02-22 16:13
2004.05.16
Рабочий стол


1-1083187607
Sergix
2004-04-29 01:26
2004.05.16
проблемы с DLL


1-1083500489
AndrewVolkov
2004-05-02 16:21
2004.05.16
Какой-то странный глюк при работе с тхт файлом