[英]What is the correct way to cancel a RegNotifyChangeKeyValue?
RegNotifyChangeKeyValue
異步使用很簡單:傳遞一個事件對象並等待事件發出信號。
然而,不太清楚的是取消通知請求的正確方法。 例如,如果在等待時設置了超時,則:
RegNotifyChangeKeyValue(hKey, false, REG_NOTIFY_CHANGE_LAST_SET, regEvent.SafeWaitHandle, true);
regEvent.WaitOne(TimeSpan.FromMinutes(30))
如果在沒有通知觸發的情況下發生超時,則此通知可能會等待並等待觸發。 如果通知和等待在循環內,則可能會更糟糕,可能會注冊許多通知(每個過期超時一個)。
我只是關閉事件句柄( regEvent
)和注冊表鍵句柄( hKey
)嗎? 還有什么我需要調用,例如目錄更改通知有FindCloseChangeNotification
,這里有相應的嗎?
我目前正在使用P / Invoke和C#,但我不認為這應該有所作為 - 任何答案都應該集中在Windows API的要求和用法上。 如果我使用VC ++中的RegNotifyChangeKeyValue
/ CreateEvent
/ WaitForSingleObject
,這將是同樣的問題。
關閉打開的注冊表項就足夠了。 當鑰匙關閉時,會發出事件信號。 這是記錄在案的行為 。 因此,只需確保在釋放事件之前關閉注冊表項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.