多线程一般用win32 API函数,比较直接简单
如下所示:
//注,此行写成TForm1.MyFun Createthread调用处会报错。
function MyFun(p: Pointer): Integer;stdcall;
var
i: Integer;
begin
for i := 0 to 500000 do
begin
Form1.Canvas.Lock
Form1.Canvas.TextOut(10, 10, IntToStr(i));
Form1.Canvas.Unlock;
end;
Result := 0;
end;
function MyFun1::Integer;stdcall;
var
i: Integer;
begin
for i := 0 to 500000 do
begin
Form1.Canvas.Lock
Form1.Canvas.TextOut(10, 10, IntToStr(i));
Form1.Canvas.Unlock;
end;
Result := 0;
end;
procedure TForm1.btn1Click(Sender: TObject);
var
ID: THandle;
begin
CreateThread(nil, 0, @MyFun, nil, 0, ID);//创建多线程对象,调用的函数在子线程上面运行
TMyThread.Create();//本函数在主线程上面运行
end;
@MyFun表示函数的首地址,也就是指针对象
stdcall表示本函数式标准的win32函数
738

被折叠的 条评论
为什么被折叠?



