初学多线程,求高手指点

来源:互联网 发布:淘宝关键词优化工具 编辑:程序博客网 时间:2024/05/16 15:44
 

function MyFun(p:Pointer):Integer;stdcall;
  var
    i:Integer;
begin
  for i := 0 to 90000 do
  begin
    MessageBox(0,'aaa','fdsf',MB_OK); //线程函数体里只可以执行函数,不可以执行过程;
    ShowMessage('aa'); //所以执行这句会出错;
    //因为,ShowMessage是过程体,MessageBox是函数体;按Crtl键加鼠标左点单击查看原形就知道;
    Form1.Canvas.TextOut(10,10,IntToStr(i));
    Sleep(2);
  end;
end;

procedure TForm1.btn1Click(Sender: TObject);
  var
    Id:DWORD;
begin
  HTheard := CreateThread(nil,0,@MyFun,nil,CREATE_SUSPENDED,Id);
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
  ResumeThread(HTheard); //执行线程;就是开始;
end;

procedure TForm1.btn3Click(Sender: TObject);
begin
  SuspendThread(HTheard); //挂起线程;也就是暂停;
end;