private void ThreadLoop()
{
IntPtr registryKey;
int result = RegOpenKeyEx(
_registryHive,
_registrySubName, 0,
STANDARD_RIGHTS_READ |
KEY_QUERY_VALUE |
KEY_NOTIFY,
out registryKey);
if (result != 0)
throw new Win32Exception(result);
try
{
var _eventNotify = new AutoResetEvent(false);
var waitHandles = new WaitHandle[] { _eventNotify, _eventTerminate };
while (!_eventTerminate.WaitOne(0, true))
{
result = RegNotifyChangeKeyValue(registryKey, true, _regFilter, _eventNotify.SafeWaitHandle.DangerousGetHandle(), true);