我正在使用字典来收集多线程应用程序中的事件,在添加事件时使用锁,而在搜索事件时不使用它。每隔一小时左右,我就会对超过特定时间的事件进行清理。非常简单,而且有效。
我想移动到 ConcurrentDictionary 来删除锁,我想我只需要添加“并发”并将 Add 更改为 TryAdd。但是后来我遇到了 LINQ 只返回 ToDictionary 的错误。我显然不能使用 LINQ,但我很想知道是否可以做些什么来保护它。更重要的是,在迁移到 ConcurrentDictionry 之前我还应该考虑什么?
public class messageResult
{
public Result result;
public DateTime receivedTime;
}
public Dictionary<Guid, messageResult> events = new Dictionary<Guid, messageResult>();
lock (events)
{
events = events.Where(p => p.Value.receivedTime >= t).ToDictionary(p => p.Key, p => p.Value);
}
谢谢