private void ReadLoop()
{
//this.hasStarted = true;
IArrayView<EEGDataEntry> data;
for (bool firstTime = true; !this.shouldStop; firstTime = false)
{
lock (this.Lock)
{
if (this.isOnline)
{
if (this.isOnline = this.TryGetData(out data))
foreach (var listener in this.listeners)
listener.Listen(data);
else
foreach (var listener in this.listeners)
listener.SourceDisconnected(this);
}
else if (this.isOnline = this.TryGetData(out data))
foreach (var listener in this.listeners)
{
listener.SourceConnected(this);
listener.Listen(data);
}
else if (firstTime)
foreach (var listener in this.listeners)
listener.SourceDisconnected(this);
}
Thread.Sleep(READ_INTERVAL_MILLIS);
}
lock (this.Lock)
this.DisposeHelper();
}