From 6681b8e92cca794928cb47d62e57fcfe9df882a1 Mon Sep 17 00:00:00 2001 From: Morten Nielsen Date: Wed, 22 Dec 2021 13:52:24 -0800 Subject: [PATCH] Reduce CPU usage. Fixes #98 --- src/NmeaParser/BufferedStreamDevice.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/NmeaParser/BufferedStreamDevice.cs b/src/NmeaParser/BufferedStreamDevice.cs index 8980a7f..e6953f8 100644 --- a/src/NmeaParser/BufferedStreamDevice.cs +++ b/src/NmeaParser/BufferedStreamDevice.cs @@ -165,6 +165,7 @@ namespace NmeaParser private BurstEmulationSettings m_settings; private CancellationTokenSource m_tcs; private Task m_readTask; + private AutoResetEvent m_dataAvailableEvent = new AutoResetEvent(false); /// /// Initializes a new instance of the class. @@ -232,6 +233,7 @@ namespace NmeaParser m_buffer.CopyTo(newBuffer, 0); bytes.CopyTo(newBuffer, m_buffer.Length); m_buffer = newBuffer; + m_dataAvailableEvent.Set(); } var delay = bytes.Length * 10d / m_settings.EmulatedBaudRate; // 8 bits + 1 parity + 1 stop bit = 10bits per byte; @@ -286,6 +288,7 @@ namespace NmeaParser /// public override int Read(byte[] buffer, int offset, int count) { + m_dataAvailableEvent.WaitOne(); lock (lockObj) { if (this.m_buffer.Length <= count)