Sample app: Limit output window queue to avoid out of memory exception

This commit is contained in:
mort5161 2014-07-31 13:50:55 -07:00
parent d165526071
commit 46971fc4c8
2 changed files with 13 additions and 5 deletions

View file

@ -20,6 +20,8 @@ namespace SampleApp.WinDesktop
/// </summary>
public partial class MainWindow : Window
{
private Queue<string> messages = new Queue<string>(101);
public MainWindow()
{
InitializeComponent();
@ -27,12 +29,14 @@ namespace SampleApp.WinDesktop
device.MessageReceived += device_MessageReceived;
var _ = device.OpenAsync();
}
private void device_MessageReceived(object sender, NmeaParser.NmeaMessageReceivedEventArgs args)
{
Dispatcher.BeginInvoke((Action) delegate()
{
output.Text += args.Message.MessageType + ": " + args.Message.ToString() + '\n';
messages.Enqueue(args.Message.MessageType + ": " + args.Message.ToString());
if (messages.Count > 100) messages.Dequeue(); //Keep message queue at 100
output.Text = string.Join("\n", messages.ToArray());
output.Select(output.Text.Length - 1, 0); //scroll to bottom
if(args.Message is NmeaParser.Nmea.Gps.Gpgsv)