diff --git a/src/SampleApp.Store/SampleApp.Store.Shared/MainPage.xaml.cs b/src/SampleApp.Store/SampleApp.Store.Shared/MainPage.xaml.cs index 3b981a7..d7f2d08 100644 --- a/src/SampleApp.Store/SampleApp.Store.Shared/MainPage.xaml.cs +++ b/src/SampleApp.Store/SampleApp.Store.Shared/MainPage.xaml.cs @@ -22,7 +22,9 @@ namespace SampleApp.Store /// public sealed partial class MainPage : Page { - public MainPage() + private Queue messages = new Queue(101); + + public MainPage() { this.InitializeComponent(); LoadData(); @@ -36,9 +38,11 @@ namespace SampleApp.Store } private void device_MessageReceived(object sender, NmeaParser.NmeaMessageReceivedEventArgs args) { - Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => + var _ = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { - 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()); }); } } diff --git a/src/SampleApp.WinDesktop/MainWindow.xaml.cs b/src/SampleApp.WinDesktop/MainWindow.xaml.cs index 021c0b0..b4e884f 100644 --- a/src/SampleApp.WinDesktop/MainWindow.xaml.cs +++ b/src/SampleApp.WinDesktop/MainWindow.xaml.cs @@ -20,6 +20,8 @@ namespace SampleApp.WinDesktop /// public partial class MainWindow : Window { + private Queue messages = new Queue(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)