我的应用程序中运行了一个线程。在线程内部,我正在等待自动重置事件退出。我想确保在使用它之后关闭事件的句柄。我有两个选择。
CloseHandle
SetEvent
活动
CloseHandle
WaitForSingleObject
醇>
请建议我哪一个是正确的方法。
答案 0 :(得分:5)
当所有线程完成使用后关闭手柄。在WaitForSingleObject听起来对我来说是明智的(因为如果成功,SetEvent必须已经完成)。
或者 - 为每个线程提供自己的句柄副本(例如,通过DuplicateHandle),并在完成后分别关闭它们的副本。这更容易出错,并且需要对代码进行较少的分析。
答案 1 :(得分:2)
在CloseHandle
之后致电SetEvent
对我没有意义。您应该(如果需要)仅在CloseHandle
之后致电WaitForSingleObject
。
答案 2 :(得分:2)
当您确定事件已完成其工作且不再需要时,关闭事件句柄。在您检测到它之后的情况下已经设置好了。因此,WaitForSingleObject
取消阻止后关闭事件处理。