如何才能挂起和执行一个线程 请说具体点 最好是源码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用线程对象的create就可以执行用suspend挂起一个线程挂起的线程用resume恢复执行改变terminated属性值可以结束线程(在execute过程中判断其值) 停止一个线程:interfacetype Txyz = class(TThread) published procedure Execute; override; end;var XYZThread: Txyz;implementationprocedure Txyz.Execute;begin while True do Application.ProcessMessages;end;procedure TForm1.Button1Click(Sender: TObject);begin XYZThread := Txyz.Create(False);end;procedure TForm1.Button2Click(Sender: TObject);begin XYZThread2.Suspend; XYZThread2.Free;end;end. CreateThread来创建一个线程;unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) UsedThread: TButton; NoUsedThread: TButton; procedure UsedThreadClick(Sender: TObject); procedure NoUsedThreadClick(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.UsedThreadClick(Sender: TObject);var hThread:Thandle;//定义一个句柄 ThreadID:DWord;begin//创建线程,同时线程函数被调用 hthread:=CreateThread(nil,0,@MyThreadfunc,nil,0,ThreadID); if hThread=0 then messagebox(Handle,'Didn'tCreateaThread',nil,MB_OK);end;procedure TForm1.NoUsedThreadClick(Sender: TObject);begin MyThreadfunc(nil); //没有创建线程时,直接调用线程函数end;function MyThreadFunc(P:pointer):Longint;stdcall;//线程函数var i:integer; DC:HDC; S:string;begin DC:=GetDC(Form1.Handle); for i:=0 to 100000 do begin S:=Inttostr(i); Textout(DC,10,10,Pchar(S),length(S));end; ReleaseDC(Form1.Handle,DC);end;end. 谁有MS-DOS 7.1下的xcopy.exe文件 fastreport 很简单的问题,条件if语句,马上结贴,在线等 sql 分组查询的问题 关于服务程序的几个问题 离开了游戏公司,工资却翻了一倍,突然有种说不出来的感觉!散分! 如何取得远程SQL服务器的所有数据库的名称及下属的表名? 高手请进 ExpressQuantumGrid 4 刪除記錄的問題? win8 写注册表 一个数据库方面的问题(急-在线等,先谢) 怀念朱总理!! 一个简单得问题,各位来帮忙!
用suspend挂起一个线程
挂起的线程用resume恢复执行
改变terminated属性值可以结束线程(在execute过程中判断其值)
interfacetype
Txyz = class(TThread)
published
procedure Execute; override;
end;var
XYZThread: Txyz;implementationprocedure Txyz.Execute;
begin
while True do Application.ProcessMessages;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
XYZThread := Txyz.Create(False);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
XYZThread2.Suspend;
XYZThread2.Free;
end;end.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
UsedThread: TButton;
NoUsedThread: TButton;
procedure UsedThreadClick(Sender: TObject);
procedure NoUsedThreadClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.UsedThreadClick(Sender: TObject);
var
hThread:Thandle;//定义一个句柄
ThreadID:DWord;
begin
//创建线程,同时线程函数被调用
hthread:=CreateThread(nil,0,@MyThreadfunc,nil,0,ThreadID);
if hThread=0 then
messagebox(Handle,'Didn'tCreateaThread',nil,MB_OK);
end;
procedure TForm1.NoUsedThreadClick(Sender: TObject);
begin
MyThreadfunc(nil);
//没有创建线程时,直接调用线程函数
end;
function MyThreadFunc(P:pointer):Longint;stdcall;
//线程函数
var
i:integer;
DC:HDC;
S:string;
begin
DC:=GetDC(Form1.Handle);
for i:=0 to 100000 do begin
S:=Inttostr(i);
Textout(DC,10,10,Pchar(S),length(S));
end;
ReleaseDC(Form1.Handle,DC);
end;end.