Форум: "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