Delphi 2010线程

12 delphi multithreading delphi-2010

有人可以发布Delphi 2010最简单的线程示例,例如,当点击按钮时将一些文本放入备忘录中吗?随着实施和所有.谢谢.

更新:好的,只是一个做某事的简单线程.不需要备忘录.谢谢.

Chr*_*ton 13

Delphi附带了一个很好的线程演示,包括GUI/Synchronize.在D2005中,它位于:C:\ Program Files\Borland\BDS\3.0\Demos\DelphiWin32\VCLWin32\Threads


Lin*_*nas 11

我能想象的最简单的例子:(假设你在Form1上有Memo1)

procedure TForm1.Button1Click(Sender: TObject); 
begin   
  TThread.CreateAnonymousThread(procedure
      var
        slThread: TStringList;
        i: Integer;
        begin
          //do something in thread
          slThread := TStringList.Create;
          try
            for i := 0 to 100 - 1 do
            begin
              slThread.Add(Format('Value %D',[i]));
            end;

            //update gui
            TThread.Synchronize(nil, procedure
            begin
              Form1.Memo1.Lines.AddStrings(slThread);
            end);


          finally
            slThread.Free;
          end;


        end).Start;
end;
Run Code Online (Sandbox Code Playgroud)

虽然我不建议使用它,因为它有一些缺点.下降你自己的TThread类更好,但对于你的问题,这个例子非常适合.

  • 沃伦,问题是关于最简单的例子.在大多数情况下,最简单的并不是最好的.另一方面,TThread.CreateAnonymousThread是标准的Delphi函数,我想这是出于此目的. (2认同)