释放线程遇到的问题(30分)

  • 主题发起人 主题发起人 bluz
  • 开始时间 开始时间
B

bluz

Unregistered / Unconfirmed
GUEST, unregistred user!
我在free一个线程的时候出现“在异步运行时,操作不能被执行”的错误,请问这是什么原因?
 
线程是这样释放的吗??
你用什么创建的线程呢?如果用
hThread=CreateThread(NULL,0,WriteClient,szFileName,0,&dwTid);
CloseHandle(hThread);
那释放线程就要用:
ExitThread(0);
 
thread.Suspend;
thread.free;
 
我从来不调用free来释放线程的。我都是FreeOnTerminated := True, 然后在Execute最后加上自定义资源的释放代码的,呵呵不会出问题。
另外:Thread.Suspend然后调Thread.Free有点浪费,因为Thread.Free中会判断Suspend状态然后Resume然后再WaitFor。。。
 
多人接受答案了。
 
后退
顶部