C#中的错误"Collection was modified; enumeration operation may not execute":如何修复?
大家好,同事们!我是C#和WCF的新手,遇到了一个奇怪的错误:"Collection was modified; enumeration operation may not execute"。
我有一个WCF服务,用于处理订单。在服务内部,我使用`ConcurrentDictionary`来存储活动订单。我定期启动一个后台线程,检查订单状态并删除已完成的订单。以下是简化代码:
```csharp
public class OrderService
{
private ConcurrentDictionary _orders = new ConcurrentDictionary();
public void ProcessOrders()
{
// 后台清理线程
Task.Run(() =>
{
while (true)
{
foreach (var kvp in _orders)
{
if (kvp.Value.Status == OrderStatus.Completed)
{
_orders.TryRemove(kvp.Key, out _);
}
}
Thread.Sleep(1000);