【发布时间】:2014-04-14 21:32:36
【问题描述】:
我在 Delphi XE5(iOS 和 Android)中使用 REST 组件。我目前正在通过 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 模拟器进行测试。 谢谢 !
【问题讨论】:
标签: multithreading delphi delphi-xe5