Я после коллекции со следующими свойствами:
- threadsafe: он будет использоваться в asp.net, и несколько клиентов могут пытаться добавлять, удалять и получать доступ к элементам одновременно
- максимальные элементы: я хочу иметь возможность установить верхнюю границу, максимальное количество элементов, во время построения
- TryAdd: метод, который работает так же, как
BlockingCollection<T>.TryAdd(T)
, будет идеальным, то есть он вернет false, если достигнут максимальное количество элементов. - Словарь типа. В большинстве других случаев
ConcurrentDictionary
был бы идеальным, то есть способностью идентифицировать элементы ключом, удалить любой элемент (не только первый или последний, который, я думаю, это ограничение сBlockingCollection
)
Прежде чем я попытаюсь опрокинуть свои собственные, мои вопросы:
- Я пропустил встроенный тип, который поставил бы безопасный потолок на количество элементов в коллекции?
- Есть ли способ достичь этой функциональности с
BlockingCollection
каким-то образом?
Наконец, если мне нужно попытаться сделать свой собственный, о каком подходе я должен думать? Это просто, как обернутый Dictionary
с locks
?
Пример использования: Чат-комната с определенным лимитом на количество участников может хранить информацию о соединении участников и отклонять новых участников, пока не будет места для ввода, когда будет полностью