Avatar ·

Fehler "Collection was modified; enumeration operation may not execute" in C# bei der Arbeit mit einem Dictionary in WCF

Hallo Kollegen! Ich schreibe einen WCF-Service, der Anfragen von mehreren Clients gleichzeitig verarbeitet. Im Service verwende ich ein statisches Dictionary `Dictionary` zum Caching von Daten. Wenn Clients Anfragen senden, aktualisiere ich manchmal dieses Dictionary (füge Elemente hinzu/entferne sie) und lese gleichzeitig in einer `foreach`-Schleife daraus. Plötzlich erhalte ich die Exception: "Collection was modified; enumeration operation may not execute". \n\nHier ist der vereinfachte Code:\n\n```csharp\npublic class MyService : IMyService\n{\n private static Dictionary _cache = new Dictionary();\n\n public string GetData(int key)\n {\n // Manchmal erfolgt ein Hinzufügen zum Dictionary\n if (!_cache.ContainsKey(key))\n {\n _cache.Add(key, FetchFromDatabase(key));\n }\n```