簡體   English   中英

取消RegNotifyChangeKeyValue的正確方法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM