diff --git a/v2rayN/ServiceLib/ViewModels/MsgViewModel.cs b/v2rayN/ServiceLib/ViewModels/MsgViewModel.cs index 06657a93..fbe06cb0 100644 --- a/v2rayN/ServiceLib/ViewModels/MsgViewModel.cs +++ b/v2rayN/ServiceLib/ViewModels/MsgViewModel.cs @@ -86,15 +86,25 @@ public class MsgViewModel : MyReactiveObject } catch (Exception ex) { - _queueMsg.Enqueue(ex.Message); + EnqueueWithLimit(ex.Message); _lastMsgFilterNotAvailable = true; } } - _queueMsg.Enqueue(msg); + EnqueueWithLimit(msg); if (!msg.EndsWith(Environment.NewLine)) { - _queueMsg.Enqueue(Environment.NewLine); + EnqueueWithLimit(Environment.NewLine); + } + } + + private void EnqueueWithLimit(string item) + { + _queueMsg.Enqueue(item); + + while (_queueMsg.Count > NumMaxMsg) + { + _queueMsg.TryDequeue(out _); } }