我可以在CreateFile()返回的HANDLE上调用SetEvent()吗?

时间:2015-10-18 22:52:59

标签: c winapi visual-c++

我在线程中使用ReadDirectoryChangesW()来监视文件更改,并且我将CreateFile()返回的句柄传递给ReadDirectoryChangesW()。我在WaitForSingleObject()中使用相同的句柄来等待目录中的文件更改。我可以在此HANDLE上调用SetEvent()来手动退出线程吗?

1 个答案:

答案 0 :(得分:4)

文件句柄可用作对WaitForSingleObject的调用中的同步对象。这并不意味着您可以使用任何特定于同步对象的API调用,例如SetEventDragNDrop的文档清楚地说明了主题:

  

hEvent [in]

     

事件对象的句柄。 SetEventCreateEvent函数返回此句柄。

终止等待事件的线程的规范解决方案是创建一个额外的事件对象,并在线程内使用OpenEvent。当线程需要终止时,您在该事件对象上调用SetEventWaitForMultipleObjects的返回值报告了哪个同步对象已发出信号。