delphiXE关于线程和多线程、线程的同步与异步执行
一、最好的参照案例
{$BDS}\source\fmx\FMX.Helpers.Android.pas
如下四个独立方法:
type
TMethodCallback = procedure of object;
TCallBack = reference to procedure;
procedure CallInUIThread(AMethod: TMethodCallback); overload; //:在UI中调用线程并回调某个对象或类的事件:在自己的单元文件重新实现
procedure CallInUIThread(AMethod: TCallBack); overload; //:在UI中调用线程并回调某个匿名过程:在自己的单元文件重新实现
procedure CallInUIThreadAndWaitFinishing(AMethod: TMethodCallback); overload; //:在UI中调用线程且等待其结束并回调某个对象或类的事件:在自己的单元文件重新实现
procedure CallInUIThreadAndWaitFinishing(AMethod: TCallBack); overload; //:在UI中调用线程且等待其结束并回调某个匿名过程:在自己的单元文件重新实现
implementation
use FMX.Types, System.Generics.Collections,
System.SyncObjs, System.Rtti, System.Classes, FMX.Consts;
var
//ActiveJavaRunnables: TThreadList<TRunnable>; //改为:
ActiveThreadsRunnables: TThreadList<TRunnable>; //:活动的能运行的线程列表:uses System.Generics.Collections
initialization
ActiveJavaRunnables := TThreadList<TRunnable>.Create;
finalization
ActiveJavaRunnables.DisposeOf;
end.
二、将其稍作修改,变成你自己的通用线程执行类