某一线程一直在执行着,我要在程序里设定一个按钮事件,要让用户一按按钮就执行一系列语句,但必须结束该线程,并等待该线程完全结束后才能执行这些语句。请问这样实现?
解决方案 »
- GPRS远程抄表问题
- C 代码 转delphi
- 这是登陆按钮的代码,为什么登陆失败关闭不了主窗体,form2为主窗体
- 高手不防看看.问题原因何在.
- 请问怎么在脚本中使用varArrayCreate出来的自动化对象数组?
- 20万条记录用cds或者直接用query的 append 方法插入到数据库中,应该注意哪些细节来,提高处理的速度?
- 请问ADOQuery的参数设置问题?
- 为什么我的COMBOBOX下拉的内容到不了表里呢?(内详)请教
- 不规则数据在数据库中的存储问题,请大家给点意见
- 救命啊!DELPHI语句转换成VB,就一句.
- 问题很苯的问题吧:关于 Twebbrowser
- 我想做一个类似OICQ界面的程序
begin
while form1.bfalg=true do
begin
sleep(1);
application.processmessage;
end;
form1.bfalg:=true ;
end;
procedure tform1.oncreate(sender;TObject);
var
h,threadid:Dword;
begin
bflag:=true;
h:=createthread(nil,0,@test,nil,0,threadid);
end;
procedure tform1.button1onclick(sender:Tobject);
begin
set bflag:=false;
while bflag=false do
begin
sleep(1);
application.processmessage;
end;
.....
end;
现在又有一个让我头疼的问题:一旦在刚开始创建线程对象时加上FreeOnTerminated;
就不能用WaitFor语句结束线程,否则运行时就出现指针找不到对象的错误。
请问各位这个问题怎样解决?
我说一个比较简单的办法,你可以试一下:
1.仍然设置该线程的FREEONTERMINATE := TRUE;
2.该线程中设置一个变量为True,例如:
Procedure Exec ;
begin
doSomthing...;
hasRun := True ; // 在IMPLEMENATION 中声明这个变量
susPend;
end;
主线程通过检测hasRun来决定是否进行下一步代码的执行.
学习中...那位大哥有多线程的资料请给小弟一份 不胜感激啊
mail:[email protected]