我在一个帖子中使用ReadDirectoryChangesW
的同步味道。一切都运作良好。
但是除了从主线程调用TerminateThread
之外,我无法终止该线程,因为如果受监视目录中没有活动,ReadDirectoryChangesW
将永远等待。
TerminateThread
的解决方案有效,但这有点脏。
另一种解决方案是在受监控目录中创建一个虚拟文件,该文件将解锁ReadDirectoryChangesW
,但这只是另一个黑客攻击。
那么有没有办法正常取消阻止/中止ReadDirectoryChangesW
?
答案 0 :(得分:1)
您可以切换到使用完成例程并在调用ReadDirectoryChangesW()
之后立即调用等待函数,该函数会使您进入可警告的等待状态,并等待您用于中止等待的事件。 ..
答案 1 :(得分:1)
如果使用FILE_SYNCHRONOUS_IO_ALERT打开句柄,则可以使用未记录的NtAlertThread发送信号以停止等待。