Delphi处理多并发示例
时间: 2023-06-13 12:08:03 浏览: 80
Delphi 有一个 TTask 类,可以用来处理多线程并发任务。下面是一个处理多并发的示例代码:
```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, System.Threading;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure DoWork;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.DoWork;
begin
Sleep(Random(5000)); // 模拟一些工作
TThread.Synchronize(nil, procedure
begin
Memo1.Lines.Add('任务完成');
end);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
Memo1.Lines.Clear;
for i := 1 to 10 do
begin
TTask.Run(procedure
begin
DoWork;
end);
end;
end;
end.
```
这个示例代码中,我们创建了一个简单的界面,其中有一个 Memo 控件和一个按钮。当用户点击按钮时,我们会启动 10 个并发任务,每个任务都会执行 DoWork 方法。
在 DoWork 方法中,我们使用 Sleep 函数来模拟一些工作,这里是一个随机时间,最长为 5000 毫秒。完成工作后,我们使用 TThread.Synchronize 方法来更新 Memo 控件中的文本。
在 Button1Click 方法中,我们简单地循环 10 次,并使用 TTask.Run 方法来启动每个并发任务。