From d418c9548111ac13e6766975c4e46c437b352905 Mon Sep 17 00:00:00 2001 From: Brandon Smith Date: Sat, 31 Oct 2015 00:31:14 -0300 Subject: [PATCH] Improve message cache management --- src/Discord.Net/Models/Channel.cs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/Discord.Net/Models/Channel.cs b/src/Discord.Net/Models/Channel.cs index 2aa913988..98f2f1c9e 100644 --- a/src/Discord.Net/Models/Channel.cs +++ b/src/Discord.Net/Models/Channel.cs @@ -146,14 +146,12 @@ namespace Discord var cacheLength = _client.Config.MessageCacheLength; if (cacheLength > 0) { - while (_messages.Count > cacheLength - 1) + var oldestIds = _messages.Select(x => x.Value.Id).OrderBy(x => x).Take(_messages.Count - cacheLength); + foreach (var id in oldestIds) { - var oldest = _messages.Select(x => x.Value.Id).OrderBy(x => x).FirstOrDefault(); - if (oldest != null) - { - if (_messages.TryRemove(oldest, out message)) - _client.Messages.TryRemove(oldest); - } + Message removed; + if (_messages.TryRemove(id, out removed)) + _client.Messages.TryRemove(id); } _messages.TryAdd(message.Id, message); }