这里的代码是我经常使用的,但是由于delphi程序员很少这样使用,因为vcl的TThread已经为我们做好了一切,然而我的方法在效率上要要由于TThread代码如下: procedure ThreadProc(ptr:Pointer);stdcall; begin class(ptr).member function or member data do thread works end //以上为要调用的线程函数 //以下为调用线程的函数 procedure class.CallThread() var dwThreadID : DWORD; begin CreateThread(nil,0,@ThreadProc,self,0,dwThreadID); end解释以下:class为自定义的类名,CallThread为调用线程的函数,此函数将self传递给线程函数ThreadProc,现在在线程函数内通过该方法class(ptr).member便可传递调用线程的类实例了,注意线程函数一定要是全局函数,因为object pascal不像c++支持静态函数
不然
该内存就在创建线程的时候存在等EXCUTE后,该内存就不存在了所以,如果要传如的话,要传全局的变量
procedure ThreadProc(ptr:Pointer);stdcall;
begin
class(ptr).member function or member data
do thread works
end
//以上为要调用的线程函数
//以下为调用线程的函数
procedure class.CallThread()
var
dwThreadID : DWORD;
begin
CreateThread(nil,0,@ThreadProc,self,0,dwThreadID);
end解释以下:class为自定义的类名,CallThread为调用线程的函数,此函数将self传递给线程函数ThreadProc,现在在线程函数内通过该方法class(ptr).member便可传递调用线程的类实例了,注意线程函数一定要是全局函数,因为object pascal不像c++支持静态函数