delphi 创建线程 ,等待时间结束
时间: 2023-12-30 20:24:47 浏览: 130
好的,如果您想在 Delphi 中创建一个线程并等待一段时间后结束,您可以尝试以下代码:
```delphi
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TMyThread = class(TThread)
private
FWaitTime: Integer;
protected
procedure Execute; override;
public
constructor Create(AWaitTime: Integer);
end;
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
constructor TMyThread.Create(AWaitTime: Integer);
begin
inherited Create(True);
FWaitTime := AWaitTime;
end;
procedure TMyThread.Execute;
begin
Sleep(FWaitTime);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
MyThread: TMyThread;
begin
MyThread := TMyThread.Create(3000); // 创建一个等待 3 秒的线程
try
MyThread.Start; // 启动线程
MyThread.WaitFor; // 等待线程结束
Memo1.Lines.Add('Thread finished.');
finally
MyThread.Free;
end;
end;
end.
```
在上面的代码中,我们首先定义了一个 `TMyThread` 类,继承自 `TThread`。在 `TMyThread` 类中,我们新增了一个私有属性 `FWaitTime`,表示线程等待的时间。在 `TMyThread.Create` 构造函数中,我们传入等待时间,然后调用父类的构造函数来创建线程对象。
在 `TMyThread.Execute` 方法中,我们调用 `Sleep(FWaitTime)` 来使线程等待指定的时间。在 `TForm1.Button1Click` 事件中,我们创建了一个 `TMyThread` 对象,并传入等待 3 秒的时间。然后调用 `MyThread.Start` 方法来启动线程,并在启动后调用 `MyThread.WaitFor` 方法来等待线程结束。最后在 `finally` 块中释放线程对象。
当线程结束后,会自动调用 `TMyThread.Execute` 方法并退出,此时我们在主线程中就可以得到线程结束的通知,然后在 `Memo1` 控件上添加一条提示信息。
阅读全文