我现在要用到delphi多线程,是delphi的,不要用API,但是不知道挂起,恢复,结束的代码演示,希望能有个高手帮忙解答一下。很感谢!~
解决方案 »
- 日期型数据如何显示的时候只为年月,不要日.
- 一段关于在form 窗口中写字 的代码,为什么不行??
- fastreport预览时只有一页,点打印就多打印一页空白页,求救!!!!
- 本人刚做的〈决战〉封包式外挂。。。。
- 狂散分!!!来者人人有份(分)
- 我很菜!怎么转换类型?!
- 本年最后一次.............前10位反馈者散分!!
- 怎樣對一個查詢得到的結果再進行操作﹐如對查詢結果集的某個字段值求累計和﹖
- 谁能解决这个问题????????????
- 本人编写了一个小程序,后台使用Access 2000数据库
- delphi多线程的问题,希望得到帮助,很急~~谢谢
- delphi2010,MainMenu Autohotkey设为 maManual还是不行,怎么弄呀?
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.
Create的参数是 “是否挂起”
如果 true,则需要调用 resume 才能让线程运行。
如果 false,则直接进行 execute 中的代码。
MyThread.Resume 恢复
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
不过不建议这么做,会引起内存泄露