Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Delphi, PostMessage и TTrayIcon

Автор: djinox
Дата сообщения: 25.07.2009 15:12
Доброго времени суток!
Имеется прога выполняющая сетевые запросы в отдельном потоке, а в случае ошибки соединения - текст ошибки надо передать в Balloon-подсказку в трей. Все бы хорошо, но при возникновении ошибки balloon в трее начинает высвечиваться в бесконечном loop'е и избавится от него можно только завершением процесса проги. Юзаю компонент Indy HTTP.

Код, обрабатывающий исключения (внутри потока):

Код:
type
PMsgStrRec=^MsgStrRec;
MsgStrRec=Record
Str: String;
end;
...
try
html := HTTP.Get(URL);
except
on E: EIdException do
begin
New(pMsg);
pMsg^.Str := E.Message;
PostMessage(Application.MainForm.Handle,MESS,2,integer(pMsg));
Exit;
end
else Exit;
end;
Автор: urmigar
Дата сообщения: 25.07.2009 16:27
djinox

Есть способ проще и надёжнее передать данные из потока в основной поток:
1. Создавай поток используя класс TThread
2. Для передачи данных используй Synchronize

Тебе даже почти не придётся переписывать уже написанный код
Автор: djinox
Дата сообщения: 25.07.2009 17:31
urmigar
я и так использую TThread. Synchronize насколько мне известно, не позволяет использовать методы которые предполагают параметры, а мне надо передать строку основному потоку и отобразить ее.

UPD: разобрался во всем - нашел у себя код, который собственно и приводил к бесконечному лупу.
Переписал все на Synchronize.
Автор: Hiken
Дата сообщения: 26.07.2009 05:05
djinox
Касательно параметров для Synchronize: ну так сделайте их членом класса и выводите потом все, что нужно.
Автор: djinox
Дата сообщения: 01.08.2009 10:56
Спасибо всем!
Решил проблему через SendMessage

Код:
SendMessage(Application.MainForm.Handle,MESS,2,Integer(E.Message);
Автор: delover
Дата сообщения: 02.08.2009 22:35
Hiken
А может у него TIdThread и экзекуте никак не оверайдится.

Страницы: 1

Предыдущая тема: Корректная работа с двухуровневым cxGrid.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.