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

Вниз

Проблема с IdMappedPortTCP   Найти похожие ветки 

 
dzr_gregory   (2007-06-12 16:15) [0]

Есть такая проблема. В приложении есть n компонентов TIdMappedPortTCP (Indy 10, Delphi 7). Есть общий для всех компонентов обработчик события OnConnect:
procedure TForm1.IdMappedPortTCP1Connect(AContext: TIdContext);
begin
 // здесь мы что-то делаем...
end;


Вопрос № 1: как узнать, какой компонент вызвал данный обработчик?
Вопрос № 2: есть процедура добавления строки в лог:
procedure TForm1.AddLogToStr(Str: string);
begin
 csAddLogToStr.Enter;
 try
   memoLog.Lines.Add(DateTimeToStr(Now) + " ---> " + Str);
 finally
   csAddLogToStr.Leave;
 end;
end;

Переменная csAddLogToStr типа TCriticalSection. Процедура вызывается из обработчика OnConnect (который вызывается, как я полагаю, из собственного потока IdMappedPortTCP). Проблема состоит в том, что при попытке развернуть минимизированную форму с memoLog программа подвисает. Я полагаю, что это происходит в момент отрисовки memoLog. Как с этим бороться?


 
Сергей М. ©   (2007-06-13 09:42) [1]


> как узнать, какой компонент вызвал данный обработчик?


С какой целью ?


> Как с этим бороться?


Посылать (SendMessage, PostMessage) форме Form1 некое предопределенное сообщение, при получении и обработке которого указанная строка будет добавляться в мемо.


 
dzr_gregory   (2007-06-13 15:43) [2]


> > как узнать, какой компонент вызвал данный обработчик?
>
>
> С какой целью ?
>
>
> > Как с этим бороться?
>
>
> Посылать (SendMessage, PostMessage) форме Form1 некое предопределенное
> сообщение, при получении и обработке которого указанная
> строка будет добавляться в мемо.

1. Пишу программу Port Mapper для маппинга портов. Там может быть произвольное количество правил, для каждого динамически создается компонент IdMappedPortTCP. При подключении клиента хотелось бы узнать, согласно какого правила произошло подключение. Да и в общем любопытства ради хотелось знать, возможно ли в принципе такое...
2. Насчет SendMessage огромное спасибо, что-то в голову даже не пришло такое. Буду пробовать. В принципе это проблема синхронизации между потоками, читал что-то про MREW(MultiRead-EclusiveWrite) списки, возможно и они помогут...



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

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

Наверх




Память: 0.47 MB
Время: 0.018 c
8-1174744468
VitAngel
2007-03-24 16:54
2008.03.02
Снимок с Вебкамеры


2-1202464753
Artem
2008-02-08 12:59
2008.03.02
Abstract Error в ListBox


2-1202302113
IntruderLab
2008-02-06 15:48
2008.03.02
Параметры при запуске


15-1201186192
oldman
2008-01-24 17:49
2008.03.02
"Интерфейс не зарегистрирован" что бы это могло быть?


2-1202216049
saNat
2008-02-05 15:54
2008.03.02
Как установить тип курсора для всех элементов формы?