我现在要用到delphi多线程,是delphi的,不要用API,但是不知道挂起,恢复,结束的代码演示,希望能有个高手帮忙解答一下。很感谢!~

解决方案 »

  1.   

    谢谢了。我用delphi线程类创建了一个名字为mymath1 的线程,在主线程引用了unit2单元,也继承了。就是创建不了实例,这是代码:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);  private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
    implementation{$R *.dfm}
    uses unit2;
    var
     thread1:mymath1;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    thread1:=mymath1.create;end;end.
      

  2.   

    不是说缺少参数吗?
    Create的参数是 “是否挂起”
    如果 true,则需要调用 resume 才能让线程运行。
    如果 false,则直接进行 execute 中的代码。
      

  3.   

    MyThread.Suspend 挂起
    MyThread.Resume 恢复
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Timer1: TTimer;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      end;var
      Form1: TForm1;implementation{$R *.dfm}var
      hThread: THandle;
      num: Integer;  {线程入口函数}
    function MyThreadFun(p: Pointer): Integer; stdcall;
    begin
      while True do 
      begin
        num := Random(100);
      end;
      Result := 0;
    end;{建立并挂起线程}
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ID: DWORD;
    begin
      hThread := CreateThread(nil, 0, @MyThreadFun, nil, CREATE_SUSPENDED, ID);
      Button1.Enabled := False;
    end;{唤醒并继续线程}
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      ResumeThread(hThread);
    end;{挂起线程}
    procedure TForm1.Button3Click(Sender: TObject);
    begin
      SuspendThread(hThread);
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Timer1.Interval := 100;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      Text := IntToStr(num);
    end;end.
    至于线程结束可以用api
    terminatethread
    不过不建议这么做,会引起内存泄露