zoukankan      html  css  js  c++  java
  • 线程【五】VCL下的线程类

    在这里把网友常常搞不清楚的属性作用列出来:

    一、FreeOnTerminate
    用于表明线程执行完毕后是自动释放还是保留,默认为False

    二、Terminate

    该过程只是简单地设置线程类的Terminated标志,并不是真正的释放,这一点要格外注意

    三、Synchronize

    该函数是同步方法,如果线程中有操作UI的语句时,需要把UI操作写成过程(无参数过程),放到该方法中!

    //这段代码是要用线程打印1-99,输出至Memo1中
    TThread1 = class(TThread)
      private
        FNum: Integer;
        procedure AddLines;
      protected
        procedure Execute; override;
      end;
    
    procedure TThread1.LinesAdd();
    begin
      Form1.mmo1.Lines.add(IntToStr(FNum));//把操作UI类写成一个过程,注意,该过程不能有参数,不过可以把参数写成线程类的成员变量
    end;
    
    procedure TThread1.Execute;
    var
      i: Integer;
    begin
      FreeOnTerminate := True;
      for i := 0 to 99 do
      begin
        if Terminated then break;
        FNum:= i;
        Synchronize(AddLines);//不能有参数
      end;
    end;
    View Code
  • 相关阅读:
    类数组(伪数组)
    go面试题[2]
    go面试题[1]
    go编程第十五课时
    php实现堆排序
    go编程第十三课时
    go第十一课时
    关于循环队列 -> 击鼓传花
    网栅格布局
    《学习JAVASCRIPT数据结构与算法》 ES6 部分笔记
  • 原文地址:https://www.cnblogs.com/key-ok/p/3359006.html
Copyright © 2011-2022 走看看