W swojej aplikacji posiadam coś a’la wirtualną bazę danych, którą jest klasa singletone posiadająca referencje do paru kolekcji obiektów (komputery, użytkownicy, etc.), do których potrzebuje się odwoływać z różnych miejsc w aplikacji (asynchronicznie). Aplikacja dość mocno korzysta z threadów, z jednego threada kolekcja może być czytana, z innego updatowana, a z jeszcze innego mogą być usuwane obiekty z tej kolekcji. Usunięcie obiektu z enumerowanej kolekcji skutkuje wyjątkiem collection changed while enumerated, co stwarza potrzebę zastosowania lockowania, ale wtedy z asynchronicznej aplikacji zrobi się synchroniczna i zabije mi to wydajność. Czy macie jakiś pomysł, czym można zamienić tego singletona?