Как правильно заменить WaitHandle.Handle?

374
04 февраля 2017, 07:08

Здравствуйте!

Из программы отслеживание разделов в реестре: RegistryMonitor

Подскажите правильная ли была сделана замена WaitHandle ?!

Первоначальный код:

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
        {
            AutoResetEvent _eventNotify = new AutoResetEvent(false);
            WaitHandle[] waitHandles = new WaitHandle[] {_eventNotify, _eventTerminate};
            while (!_eventTerminate.WaitOne(0, true))
            {
                result = RegNotifyChangeKeyValue(registryKey, true, _regFilter, _eventNotify.Handle, true);
                if (result != 0)
                    throw new Win32Exception(result);
                if (WaitHandle.WaitAny(waitHandles) == 0)
                {
                    OnRegChanged();
                }
            }
        }
        finally
        {
            if (registryKey != IntPtr.Zero)
            {
                RegCloseKey(registryKey);
            }
        }
    }
}

Здесь мне пишет что WaitHandle является устаревшим..

Заменил строчку кода:

result = RegNotifyChangeKeyValue(registryKey, true, _regFilter, _eventNotify.Handle, true);

на

result = RegNotifyChangeKeyValue(registryKey, true, _regFilter, _eventNotify.SafeWaitHandle.DangerousGetHandle(), true);

Вроде всё работает как надо, ошибок нету, просто интересует Ваше мнение правильно ли я заменил _eventNotify.Handle

READ ALSO
Как использовать Costura.Fody?

Как использовать Costura.Fody?

Не могу найти что дальше делать для внедрения dll в exe после

738
Странный конструктор

Странный конструктор

Почему в конструкторе используются фигурные скобки?

426
Переопределение GetHashCode

Переопределение GetHashCode

Троелсен в своей книге, советует переопределить метод ToString() у класса(переопределенная версия возвращает строку из полей всего класса через...

466
Dictionary ключем которого является объект

Dictionary ключем которого является объект

Допустим, имеется объект с переопределенным GetHashCode, который я хочу сделать ключемGetHashCode вычисляется, как совокупность GetHashCode всех полей

402