RegNotifyChangeKeyValue
的异步用法非常简单:将事件对象传递给它,然后等待事件被通知。
什么不是那么清楚,但是,是取消通知请求的正确方法。例如,如果已在等待中设置了超时,例如:
RegNotifyChangeKeyValue(hKey, false, REG_NOTIFY_CHANGE_LAST_SET, regEvent.SafeWaitHandle, true);
regEvent.WaitOne(TimeSpan.FromMinutes(30))
如果发生超时,而不通知点火,该通知是左想必未决和等待火灾。这是更坏,如果通知和等待是一个循环内,潜在的许多注册通知(一个用于每个过期超时)。
我是否只关闭了事件句柄(regEvent
)和注册表项句柄(hKey
)?还有什么我需要打电话的吗目录更改通知中有FindCloseChangeNotification
,这里是否有等效项?
我目前正在使用C#进行P / Invoke,但我认为这不会有所作为-任何答案都应集中在Windows API的要求和用法上。如果我使用了VC ++中的RegNotifyChangeKeyValue
/ CreateEvent
/ WaitForSingleObject
,这将是相同的问题。