mirror of
https://github.com/dotMorten/NmeaParser.git
synced 2026-02-04 06:44:27 +01:00
Sample app: Limit output window queue to avoid out of memory exception
This commit is contained in:
parent
d165526071
commit
46971fc4c8
|
|
@ -22,7 +22,9 @@ namespace SampleApp.Store
|
|||
/// </summary>
|
||||
public sealed partial class MainPage : Page
|
||||
{
|
||||
public MainPage()
|
||||
private Queue<string> messages = new Queue<string>(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());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue