Avatar ·

Erro "Collection was modified; enumeration operation may not execute" em C# ao trabalhar com dicionário no WCF

Olá, colegas! Estou escrevendo um serviço WCF que processa requisições de vários clientes simultaneamente. Dentro do serviço, uso um dicionário estático `Dictionary` para cache de dados. Quando os clientes enviam requisições, às vezes atualizo esse dicionário (adiciono/removo elementos) e ao mesmo tempo o leio em um loop `foreach`. De repente, recebo a exceção: "Collection was modified; enumeration operation may not execute". Aqui está o código simplificado: ```csharp public class MyService : IMyService { private static Dictionary _cache = new Dictionary(); public string GetData(int key) { // Às vezes ocorre adição ao dicionário if (!_cache.ContainsKey(key)) { _cache.Add(key, FetchFromDatabase(key)); } // Em outro lugar, por exemplo, em um método de limpeza de cache em segundo plano // foreach (var item in _cache) { ... } — é aqui que a exceção ocorre return _cache[key]; } private void CleanCach