【问题标题】:Can i call SetEvent() on an HANDLE returned by CreateFile()?我可以在 CreateFile() 返回的 HANDLE 上调用 SetEvent() 吗?
【发布时间】:2016-01-17 04:39:12
【问题描述】:

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

【问题讨论】:

    标签: c winapi visual-c++


    【解决方案1】:

    文件句柄可用作WaitForSingleObject 调用中的同步对象。这并不意味着您可以在其上使用任何同步对象特定的 API 调用,例如 SetEventSetEvent 的文档在主题上很清楚:

    hEvent [in]

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 2022-12-04
      • 2015-09-08
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多