private void Run() { TMData lastTelemetryData = new TMData(); Stopwatch sw = new Stopwatch(); sw.Start(); while (!isStopped) { try { TMData telemetryData = (TMData)readSharedMemory(typeof(TMData), sharedMemoryFile); IsConnected = true; if (telemetryData.Object.Timestamp != lastTelemetryData.Object.Timestamp) { //Debuglog("Get Data"); IsRunning = true; sw.Restart(); TelemetryEventArgs args = new TelemetryEventArgs(new TMTelemetryInfo(telemetryData, lastTelemetryData)); RaiseEvent(OnTelemetryUpdate, args); lastTelemetryData = telemetryData; } else if (sw.ElapsedMilliseconds > 500) { IsRunning = false; } Thread.Sleep(SamplePeriod); } catch (Exception e) { LogError("TMTelemetryProvider Exception while processing data", e); IsConnected = false; IsRunning = false; Thread.Sleep(1000); } } IsConnected = false; IsRunning = false; }
public TMTelemetryInfo(TMData telemetryData, TMData lastTelemetryData) { _telemetryData = telemetryData; }