当前位置:学Delphi网文档资料专题讲解多线程

Delphi里的多线程同步的方法

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2010-09-20 16:29:23

Delphi里的多线程同步的方法有好几种,例如:

delphi线程同步---信号灯实现线程同步
http://www.xuedelphi.com/wenzhang/yyjc/2009/03/200903283209.htm
delphi线程同步---临界区线程同步
http://www.xuedelphi.com/wenzhang/yytg/2009/03/200903283208.htm
delphi线程同步---互斥实现
http://www.xuedelphi.com/wenzhang/yytg/2009/03/200903283207.htm

还有Delphi自带的一个同步到主线程的方法Synchronize,这里将一个使用Windows消息的方法来实现同步!

unit uTestThread;

interface

uses
  Classes, Windows, SysUtils, Messages;

const
  // 自定义一个消息
  WM_TestThread = WM_USER + 1001;

type
  TTestThread = class(TThread)
  private
    FHandle: THandle;
    FCount: Integer;
    { Private declarations }
    procedure DoWork;
  protected
    procedure Execute; override;
  public
    constructor Create(AHandle: THandle; ACount: Integer);
    destructor Destroy; override;
  end;

implementation

{ TestThread }

constructor TTestThread.Create(AHandle: THandle; ACount: Integer);
begin
  FHandle := AHandle;
  FCount := ACount;
  inherited Create(False); // 参数为False指线程创建后自动运行,为True则不自动运行
  FreeOnTerminate := True; // 执行完毕后自动释放
end;

destructor TTestThread.Destroy;
begin

  inherited;
end;

procedure TTestThread.DoWork;
var
  I: Integer;
begin
  for I := 1 to FCount do
  begin
    { 这里根据情况来使用Sendmessage或者PostMessage,
      需要等待返回结果的使用Sendmessage,否则使用PostMessage,
      二者某些时候可以通用 }
    PostMessage(FHandle, WM_TestThread, 0, I);
    // 延时一下
    Sleep(5);
  end;
end;

procedure TTestThread.Execute;
begin
  DoWork;
end;

end.

[1] [2]  下一页

Tags:线程同步 Synchronize Windows消息

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论