我建了一个线程,用来定时去取信号,如果系统退出的话,该线程的资源不能释放,我已经试了很多方法了
(不过我在FreeOnTerminate设的是true,应该不用我手动释放吧?)
但是程序在结束的时候,总是要等待,然后就弹出错误的提示框,说access violation at ×××,我是这样释放的
thread.Terminate;
thread.Free;
(不过我在FreeOnTerminate设的是true,应该不用我手动释放吧?)
但是程序在结束的时候,总是要等待,然后就弹出错误的提示框,说access violation at ×××,我是这样释放的
thread.Terminate;
thread.Free;
解决方案 »
- 1000分求个自动抠图的源码?
- 怎样取得TstringGrid当前选中的行号,列号和当前选中行列的文本内容。
- 哪位做过ISAPI DLL型Webservice程序的高手,请帮忙看看我得程序出了什么问题?
- 简单问题 请教!请帮忙1
- 窗体加载问题,很奇怪!!在线等代,解决了马上结帖!!!
- 要面试了,请大家给小弟点意见?
- 函数构造问题的摸索请教!!!!!!!在线等待中。。。
- 要把一窗口上一个区域转成图片,但此窗口可能被其他窗口盖住,如何获取?
- 请问怎样拖动一个没有边框的窗体,但是焦点不是窗体,而是窗体上的图象.
- SQL语句中between…… and 的奇怪问题.(初学者的献礼2)
- 如何从video中提取音频并保存?
- 請問如何得到鍵盤按下的動作?
thread.Free;?? 应该不需要 后面那句话吧 看的好别扭。
我要释放的主要是指线程的。就terminate?
我们说释放线程所占用的资源 不是说释放它本身。。
2. 你释放的位置在哪儿呢 可能超前了 你可以试着将Free的位置放到最后面
比如 Form的OnCloseQuery..
是create出来的
说得没错
释放位置估计有问题
如果你对Windows比较熟练,也可以直接用CreateThread建立线程,我喜欢用这个。:)
while not thread.Terminated do
begin
end;2.在释放的时候要这样写:
thread.Terminate;
thread.WaitFor;//不写得方法名是不是这样,反正有WaitFor
thread.Free;
while not thread.Terminated do
begin
定时去取信号//**
end;好象程序一直停留在**处,当手动释放,thread.Terminate;的时候,根本程序还在执行**处的代码,所以线程也收不到退出信号。所以没释放,关闭是出错。我也遇到类似的问题,是这样想的,也没解决。
主要是线程我不懂,程序不是我写的,现在我接手,就遇到这么棘手的问题,唉有的时候出现的错误是
access violation at address ×× in module idapi32.dll
那绝对是线程写得不好或者线程每循环一次做的工作太耗时间了。要么改写线程,要么使用waitfor多等等吧