关于线程释放(20分)

  • 主题发起人 主题发起人 冰冰
  • 开始时间 开始时间

冰冰

Unregistered / Unconfirmed
GUEST, unregistred user!
请问怎样在程序中将线程释放干净,有没有例子代码?
 
freeonterminate:=true;
 
constructor TSgFilter.create (sparent:HWND;listbox:Tlistbox);
begin
Freeonterminate:=true;
inherited Create(false);

end;
 
或者把FreeOnTerminate:=false;

AThread.Terminate;
AThread.WaitFor;
AThread.Free;
 
无忌,这样释放线程是否会影响程序性能?比如,我的程序正在频繁读写数据库,偶尔有
一个线程写数据库的时候异常了(并不是线程本身异常),导致该线程假死,似乎是停在
那里了。
这时,我想强行释放该线程,但我这样释放线程的话,似乎很影响其他正在运行的线程!
有没有解决办法?谢谢!
 
“似乎很影响其他正在运行的线程”怎么会影响其它线程呢?是用了信号量或其它锁定方法
还是有线程共享变量?
 
你设置一个超时,简单的办法是用一个TIMER,超过一个时间可以关闭数据库,
让读数据库的线程出现异常,这个时候就会触发VCL的异常捕获,从而线程退
出释放资源。
 
后退
顶部