对啊。。在delphi7一点问题也没有

解决方案 »

  1.   


    对啊。。在delphi7一点问题也没有
    D7和2010差别有这么大?VCL是线程不安全的,在线程中访问VCL最好是SYNC到主线程去。你的线程只有创建没有释放的处理哦,如果你认为 FreeOnTerminate := TRUE系统会主动回收那就错了,
      

  2.   


    对啊。。在delphi7一点问题也没有
    D7和2010差别有这么大?VCL是线程不安全的,在线程中访问VCL最好是SYNC到主线程去。你的线程只有创建没有释放的处理哦,如果你认为 FreeOnTerminate := TRUE系统会主动回收那就错了,VCL在线程中安不安全这个自己是可以掌握与控制的,FreeOnTerminate := TRUE是回收释放系统自动申请的内存,也是自己可以控制的。现在问题上是在delphi2010执行完线程后,timer的enbled也是true状态,但就是不执行了。。
    从delphi7转到delphi2010,真的不是简单的字符串的问题
      

  3.   

    Delphi2010的线程操作和D7有区别,为线程执行完毕指定一个释放函数,应该就没有问题了,如下:   //创建线程
         zdthread:=Tzdthread.create(False);
        //指定线程释放函数
        zdthread.OnTerminate := Closezdthread;
       //停止计时器
       Timer1.Enabled := false;
        //运行线程
        zdthread.Start;//线程关闭事件
    procedure TForm1.Closezdthread(Sender: TObject);
    begin
      //线程释放
      Closezdthread.Terminate;
      //启动定时器
      Timer1.Enabled := true;
    end;
      

  4.   

    明白了。。操作Timer还是在线程外操作比较的可靠