Когда параметр AIn
верно, то обработчик события OnRaw
вызывается в контексте рабочего потока выполняется внутри TIdIRC
(представлено параметром AContext
). Когда AIn
является ложным, OnRaw
вызывается в контексте любого потока, в который вы посылаете команду (и AContext
- ноль).
Поскольку OnRaw
не всегда выполняется в контексте основного потока пользовательского интерфейса, необходимо синхронизировать с основным потоком пользовательского интерфейса для того, чтобы обновить Memo безопасно, например:
procedure THeaderFooterwithNavigation.IdIRC1Raw(ASender: TIdContext; AIn: Boolean; const AMessage: string);
begin
TThread.Synchronize(nil,
procedure
begin
Memo1.Lines.Add(AMessage);
end
);
end;
Однако, имейте в виду, что до XE7, TThread.Synchronize()
was broken in FireMonkey, хотя есть простой обходной путь доступен (упомянутый в приведенной выше ссылке):
procedure THeaderFooterwithNavigation.Timer1Timer(Sender: TObject);
begin
CheckSynchronize;
end;
Мое предложения прекратить использование Дельф андроида платформы ... любые журналы в LogCat? Может быть, компонент indy, использующий неправильные потоки – Selvin
Я запустил этот apk на реальном телефоне, no loggin – mca64
Правильно ли он работает в эмуляторе? – mjn