خطأ "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