以前没用过多线程,昨天在网上找到creatthread这个方法,小试一下还真实现了传说的多线程。
但是现在遇到一个“取消当前操作”的问题,也就是说我要在线程外打断前面正在执行的线程
procedure TForm1.Button9Click(Sender: TObject);
var
hThread:Thandle;//定义一个句柄
ThreadID:DWord;
begin
//创建线程,同时Search线程函数被调用
hthread:=CreateThread(nil,0,@Search,nil,0,ThreadID);
end;昨天试着在另一个按钮事件中用了
exitthread方法结果程序界面没了,但仍在运行
但是现在遇到一个“取消当前操作”的问题,也就是说我要在线程外打断前面正在执行的线程
procedure TForm1.Button9Click(Sender: TObject);
var
hThread:Thandle;//定义一个句柄
ThreadID:DWord;
begin
//创建线程,同时Search线程函数被调用
hthread:=CreateThread(nil,0,@Search,nil,0,ThreadID);
end;昨天试着在另一个按钮事件中用了
exitthread方法结果程序界面没了,但仍在运行
解决方案 »
- delphi class tnotebook not found
- 我采用ADO+SQLSERVER,众多客户端连着服务器端数据库,客户端同时直接对服务器端的数据记录添加\删除修改\,别的不做额外处理,会发生什么
- 用modem拨完号后也登陆上去,如何检测掉了线啊?
- 可不可以取得窗体边框的消息。就是说当鼠标移到窗体边框时会触发什么事件。
- 编译错误,简单,送分。
- 请教个位! 可以帮忙吗?(关于 C/S 在客户端执行查询时出错!)(在线等待)
- 請教如何用delphi獲取真實的下載地址,類似flashget的下載功能。
- 请高手指点!在EXCEL导入到SQL中如果SQL中存在相同的记录那该怎么出阿里啊?
- 为什么我的回复看不到?
- 如何改变TlistView中单独一行的颜色?
- 如何获取当前焦点进程
- 有无办法将密码等简单字符存放U盘的主控芯片中,而不是内存芯片,例如将vid/pid当密码,但不知道如何修改,另有一帖问题已解决,但无人回复,请速来取分
其实可以这样!你在线程的运行函数中放一个标记!然后判断标记是否为真,是就继续执行,否则就退出执行函数
这样就可以把线程取消了!
zhaoyu_me & suiyunonghen
你们的方法好像都不管用,我不知道问题出在那里,下面给出我参考的多线程例子,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm) BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn; procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function MyThreadFunc(P:pointer):Longint;stdcall;
var
i:longint;
DC:HDC;
S:string;
begin
DC:=GetDC(Form1.Handle);
for i:=0 to 500000 do begin
S:=Inttostr(i);
Textout(DC,10,10,Pchar(S),length(S));
end;
ReleaseDC(Form1.Handle,DC);
end;procedure TForm1.BitBtn1Click(Sender: TObject);var
hThread:Thandle;//定义一个句柄
ThreadID:DWord;
begin
//创建线程,同时线程函数被调用
hthread:=CreateThread(nil,0,@MyThreadfunc,nil,0,ThreadID);
if hThread=0 then
end;procedure TForm1.BitBtn2Click(Sender: TObject);begin
MyThreadfunc(nil);
//没有创建线程时,直接调用线程函数
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
close;
end;end.
还有你说的那个方法,能不能写个例子
能不能贴出些代码把那些好方法教教我