Avatar ·

خطأ "Collection was modified; enumeration operation may not execute" في C# عند العمل مع القاموس في WCF

مرحبًا أيها الزملاء! أكتب خدمة WCF تعالج طلبات من عدة عملاء في وقت واحد. داخل الخدمة أستخدم قاموسًا ثابتًا `Dictionary` لتخزين البيانات مؤقتًا. عندما يرسل العملاء طلبات، أحيانًا أقوم بتحديث هذا القاموس (إضافة/إزالة عناصر) وفي نفس الوقت أقرأه في حلقة `foreach`. فجأة ألتقط استثناءً: "Collection was modified; enumeration operation may not execute". إليك كود مبسط: ```csharp public class MyService : IMyService { private static Dictionary _cache = new Dictionary(); public string GetData(int key) { // أحيانًا يتم الإضافة إلى القاموس if (!_cache.ContainsKey(key)) { _cache.Add(key, FetchFromDatabase(key)); } // في مكان آخر، مثل طريقة تنظيف الخلفية للذاكرة المؤقتة // foreach (var item in _cache) { ... } — هنا يحدث الاستثناء return _cache[key]; } private void CleanCach