zoukankan      html  css  js  c++  java
  • delphi 中使用WaitForMultipleObjects等待线程执行,再执行后续代码

    unit1

    [delphi] view plain copy
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

    type
    TForm1 = class(TForm)
    btn1: TButton;
    mmo1: TMemo;
    procedure btn1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    procedure ThreadTest;stdcall;
    implementation

    uses Unit2;

    {$R *.dfm}


    procedure ThreadTest;stdcall;
    var
    Handles:TWOHandleArray;
    //Handle:THandle;
    Test:TTestThread;
    i:Integer;
    begin
    for i := 0 to 10 do
    begin
    Test := TTestThread.Create(False);
    Handles[i] := Test.Handle;
    end;
    WaitForMultipleObjects( 11, @Handles, True, INFINITE );
    Form1.mmo1.Lines.Add( '123' );
    end;


    procedure TForm1.btn1Click(Sender: TObject);
    var
    ID:Cardinal;
    begin
    CreateThread( nil, 0, @ThreadTest, nil, 0, ID );
    end;



    end.

    unit2
    [delphi] view plain copy
    unit Unit2;

    interface

    uses
    Classes;

    type
    TTestThread = class(TThread)
    private
    { Private declarations }
    protected
    procedure Execute; override;
    end;

    implementation

    uses Unit1;


    procedure TTestThread.Execute;
    begin
    { Place thread code here }
    { Place thread code here }
    //FreeOnTerminate := False;
    form1.mmo1.Lines.Add( 'ok' );

    end;

    end.

    程序执行效果:

    ok
    ok
    ok
    ok
    ok
    ok
    ok
    ok
    ok
    ok
    ok
    123
    界面上先打印出11个线程输出的“OK”,再输出123.

  • 相关阅读:
    生成证书命令keytool
    ACWEB使用HTTPS登录
    https登陆
    java调用webservice接口方法
    项目调研的误区和关键点
    成功的多项目管理
    如何向卖场贩卖多重价值
    零售业如何在淡季做出销量?
    如何进行项目调研
    项目经理的职业化优势
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/5228001.html
Copyright © 2011-2022 走看看