if mythread.suspended then
mythread.resume;但在线程中设置断点,发现线程并未被重新启动;
改成直接mythread.resume;就正确了。但我不知没有被暂停的线程,执行resume会不会导致问题?
mythread.resume;但在线程中设置断点,发现线程并未被重新启动;
改成直接mythread.resume;就正确了。但我不知没有被暂停的线程,执行resume会不会导致问题?
解决方案 »
- Expression parser 这个脚本解释器,有for delphi2010的版吗
- CReport用法
- 学习delphi,大概周期是多长时间,有Java基础
- 窗口间传递中文参数问题,救命啊~~~!!!
- 为什么不能访问服务器?
- 在程序中用到TTS,而且有用到中文TTS,请问怎样把它打包成安装程序?高分求救,在线等
- 如何把一个主菜单的一项作为popup菜单对象?
- 怎么把一个数据库的所有内容全部追加到另一个数据库中去?
- 请问各位谁有 进销存 系统说明书,小弟正再开发。谢谢!
- 各位兄弟50分哪,教教我吧,如何用寫文件的方式來生成.xls的文件?
- 请教一个简单的问题,原来安装了fastreport2.44版本,现在想安装最新版本,如何将原来的版本从控制面板中去掉啊,谢谢。送分题阿
- 用何技术可实现局域网中不同电脑之间上不同应用程序之间相互通讯和互相控制?
BOOL TerminateThread( HANDLE hThread, DWORD dwExitCode);结束别的
================================
某些紧急情况下,你可以使用TerminateThread()来终止一个线程。但是,除非没有别的办法了,否则不要用它。
例如,当线程代码陷入死循环时。TerminateThread()的声明如下:
function TerminateThread(hThread:THandle;dwExitCode:DWORD);TThread的Handle属性可以作为第一个参数,因此,TerminateThread()常这样调用:
TerminateThread(MyHosedThread.Handle,0)
如果选择使用这个函数,应该考虑到它的负面影响。
首先,此函数在Windows NT与在Windows 95/98下并不相同。在Windows 95/98 下,这个函数能够自动清除线程所占用的栈;而在Windows NT下,在进程被终止前栈仍然保留。
其次,无论线程代码中是否有try...finally块,
这个函数都会使线程立即停止执行。这意味着,被线程打开的文件没有被关闭、由线程申请的
内存没有被释放等情况。而且,这个函数在终止线程的时候也不通知D L L,当D L L关闭时,这也容易出现问题===============================
一般情况下,利用将FreeOnTerminate的属性设为True的方法来及时清除线程对象是最方便的办法,这只需要在Excute()退出前设置就行了。
设置方法如下:
Procedure TTestThread.execute;
Var
i : integer;
Begin
Inherited;
FreeOnTerminate:=true;
For i := 1 To 10000000 Do
Begin
if Terminated then break;
inc(count);
Synchronize(getcount);
End;
End;