Delphi中的线程类--之(5,大结局)[6]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 raptor 的 blog

如果不是在主线程中执行waitfor的话,很简单,只要调用waitforsingleobject等待此线程的handlesignaled状态即可。

如果是在主线程中执行waitfor则比较麻烦。首先要在handle数组中增加一个syncevent,然后循环等待,直到线程结束(即msgwaitformultipleobjects返回wait_object_0,详见msdn中关于此api的说明)。

在循环等待中作如下处理:如果有消息发生,则通过peekmessage取出此消息(但并不把它从消息循环中移除),然后调用msgwaitformultipleobjects来等待线程handlesyncevent出现signaled状态,同时监听消息(qs_sendmessage参数,详见msdn中关于此api的说明)。可以把此api当作一个可以同时等待多个handlewaitforsingleobject。如果是synceventsetevent(返回wait_object_0 + 1),则调用checksynchronize处理同步方法。

本文关键:Thread Event CriticalSection Synchronize
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top