Сервисная фабрика надежных словарных уведомлений. Событие StateManagerChanged не запускается

Я использую словарные уведомления для создания вторичных индексов в памяти. Иногда [особенно после обновления службы] событие StateManagerChanged из сервисной фабрики не срабатывает для некоторых разделов. Это предотвращает присоединение события DictionaryChanged, и мои структуры данных в памяти не заполняются, когда в базовый словарь добавляются / обновляются и т. Д. Я проверил это, добавив некоторые операторы журнала вокруг StateManagerChanged и DictionaryChanged. Если у меня 5 разделов, StateManagerChanged иногда меняется только для 3 разделов. Я теряю уведомления от других 2 разделов. Код для добавления обработчиков событий

В сервисном конструкторе:

this.StateManager.StateManagerChanged += this.OnStateManagerChangedHandler;

Обработчик события

public void OnStateManagerChangedHandler(object sender, NotifyStateManagerChangedEventArgs e)
    {
        if (e.Action == NotifyStateManagerChangedAction.Rebuild)
        {
            //this.ProcessStataManagerRebuildNotification(e);
            //TODO: log and return
            return;
        }
        this.ProcessStateManagerSingleEntityNotification(e);
    }

private void ProcessStateManagerSingleEntityNotification(NotifyStateManagerChangedEventArgs e)
    {
        var operation = e as NotifyStateManagerSingleEntityChangedEventArgs;

        if (operation.Action == NotifyStateManagerChangedAction.Add)
        {
            if (operation.ReliableState is IReliableDictionary2<KeyObject, ValueObject> dictionary)
            {
                //dictionary.RebuildNotificationAsyncCallback = this.OnDictionaryRebuildNotificationHandlerAsync;
                dictionary.DictionaryChanged += this.irScheduleDictionary_DictionaryChanged;
            }
    }
}

0 ответов