У меня есть служба с кучей входящих заказов, которые я храню в IReliableDictionary. По мере поступления новых заказов мне нужно обновлять и поддерживать отдельный отсортированный список этих заказов на протяжении всего срока действия моей программы.
Как эффективно и с параллелизмом преобразовать данные в IReliableDictionary в другую отсортированную коллекцию, чтобы избежать взаимоблокировок и не приходилось перестраивать отсортированный список с нуля каждый раз, когда поступает новый заказ?
РЕДАКТИРОВАТЬ: просмотрев документацию, я считаю, что могу добиться этого, обновив отсортированную коллекцию в локальной памяти после обновления перед фиксацией.
using (var tx = this.StateManager.CreateTransaction())
{
bool addOk = await orderDictionary.TryAddAsync(tx, 123, someOrderToAdd);
if (addOk)
{
this.SortedOrders.Add(someOrderToAdd);
}
await tx.CommitAsync();
}
Может ли кто-нибудь подтвердить, что я правильно понял документацию и что что-то вроде приведенной выше реализации не вызовет проблем с параллелизмом?