Я использую компоненты REST в Delphi XE5 (iOS и Android). В настоящее время я тестирую с помощью симулятора iOS, и мое приложение часто зависает на следующей строке кода:
R_Request.Execute;
После некоторой отладки я обнаружил, что он конкретно зависает в этой строке кода в REST.Client.PAS:
HandleEvent(DoAfterExecute);
который выглядит так:
procedure TCustomRESTRequest.HandleEvent(AEventHandler: TMethod);
begin
// Handle Synchronized if we are NOT already in the main thread
// NEVER call synchronize on the MainThread - that might shift the island!
if SynchronizedEvents and (System.MainThreadID <> TThread.CurrentThread.ThreadID) then
TThread.Synchronize(TThread.CurrentThread, AEventHandler) // FAILS HERE
else
AEventHandler;
end;
Это либо НЕ возвращает поток в .Synchronize, либо занимает очень много времени (5 минут или около того)... Он работал один раз во время отладки, но с тех пор не работает и снова только сейчас (30 мин. позже и после того, как он будет установлен в течение 5 минут, чтобы вернуть поток).
Помощь ? Или, по крайней мере, любое чувство направления, которое кто-нибудь может дать мне?
Опять же, разработка для iOS и Android (так что FMX...) и в настоящее время тестирование с помощью симулятора iOS. Спасибо !