在线程的create事件传入的指针参数或类的实例参数到execute里执行的时候就被清空了……why??????

解决方案 »

  1.   

    详见http://delphibbs.com/delphibbs/dispq.asp?lid=2367832
      

  2.   

    那要看你传过去的参数是否在内存中是全局的
    不然
    该内存就在创建线程的时候存在等EXCUTE后,该内存就不存在了所以,如果要传如的话,要传全局的变量
      

  3.   

    这里的代码是我经常使用的,但是由于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++支持静态函数