W wanggy Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-15 #1 我定义了一个线程ttest, 然后创建了test[1],test[2],test[3],test[4] 如何判断test[2]创建的线程是否运行结束。
H Huzzz Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-17 #4 wanggy: HELLO!你可以判断ThreadID是否为0。
K kindly Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-17 #5 用一个TList来维护线程 线程结束时向主线程发一个消息,主线程把TList置为nil,我作过这样的东西
H Huzzz Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-17 #6 kindly: 你说:“线程结束时向主线程发一个消息”,但能发消息线程就还没有结束,只是 快结束了。而“快结束了”到真正结束需要多久是难以确定的。 在大多数情况下,“快结束了”也够用。但在一些时候,如程序关闭时,是不够的。
kindly: 你说:“线程结束时向主线程发一个消息”,但能发消息线程就还没有结束,只是 快结束了。而“快结束了”到真正结束需要多久是难以确定的。 在大多数情况下,“快结束了”也够用。但在一些时候,如程序关闭时,是不够的。
J Jani Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-18 #7 使用GetExitCodeThread这个API,如果返回STILL_ACTIVE说明没有释放。 如果你是想在释放之后干什么事情,而必须在全部释放之后, 可以在释放前,调整线程的相对优先级为较高的级别。
使用GetExitCodeThread这个API,如果返回STILL_ACTIVE说明没有释放。 如果你是想在释放之后干什么事情,而必须在全部释放之后, 可以在释放前,调整线程的相对优先级为较高的级别。
J JJams_King Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-18 #8 能不能在快结束的时候发消息给主线程,然后WaitForSingleObject()?
C Campo Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-19 #9 同意Jani的看法,另外 可以设置FreeOnTerminate:=True,则线程会自动释放所占用的资源 或者 MyThread.Terminate WaitForSingleObject() MyThread.Free. 则可以中途中断线程。
同意Jani的看法,另外 可以设置FreeOnTerminate:=True,则线程会自动释放所占用的资源 或者 MyThread.Terminate WaitForSingleObject() MyThread.Free. 则可以中途中断线程。
R Racer Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-21 #10 可以使用API函数WaitForSingleObject来判别 if ( WaitForSingleObject(test[2].Handle,0)=WAIT_TIMEOUT) then // 线程退出来了 else // 线程退没有出来 注意,上述这种方法是不能把test[2]的属性FreeOnTerminate设为TRUE的。 假设FreeOnTerminate设为TRUE,当执行上述语句的时候,若线程test[2] 已经退出来了,也就是test[2]已经被释放了,这时引用test[2]的Handle, 要么会引发一个访问违例,要么得到的Handle是无意义的。 一般说来,若把TThread的FreeOnTerminate属性设为TRUE,是在以下情况: 创建的线程自己肯定能结束,和这个线程和其它线程没有其他瓜葛。若不 满足上述条件,把FreeOnTerminate属性设为TRUE,会带来很多意外的麻烦。
可以使用API函数WaitForSingleObject来判别 if ( WaitForSingleObject(test[2].Handle,0)=WAIT_TIMEOUT) then // 线程退出来了 else // 线程退没有出来 注意,上述这种方法是不能把test[2]的属性FreeOnTerminate设为TRUE的。 假设FreeOnTerminate设为TRUE,当执行上述语句的时候,若线程test[2] 已经退出来了,也就是test[2]已经被释放了,这时引用test[2]的Handle, 要么会引发一个访问违例,要么得到的Handle是无意义的。 一般说来,若把TThread的FreeOnTerminate属性设为TRUE,是在以下情况: 创建的线程自己肯定能结束,和这个线程和其它线程没有其他瓜葛。若不 满足上述条件,把FreeOnTerminate属性设为TRUE,会带来很多意外的麻烦。
H Huzzz Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-21 #11 to Racer:好像是WAIT_OBJECT_0吧: if ( WaitForSingleObject(test[2].Handle,0)=WAIT_OBJECT_0) then // 线程退出来了 else // 线程退没有出来
to Racer:好像是WAIT_OBJECT_0吧: if ( WaitForSingleObject(test[2].Handle,0)=WAIT_OBJECT_0) then // 线程退出来了 else // 线程退没有出来