Сервисная фабрика надежных словарных уведомлений. Событие 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;
}
}
}