private void UpdateProperties(NavDataReceivedEventArgs e) { Flying = e.NavData.Flying; CommWatchDog = e.NavData.CommWatchDog; if (e.NavData.Demo != null) { Altitude = e.NavData.Demo.Altitude; BatteryPercentage = e.NavData.Demo.BatteryPercentage; Psi = e.NavData.Demo.Psi; Phi = e.NavData.Demo.Phi; Theta = e.NavData.Demo.Theta; KilometersPerHour = e.NavData.Demo.KilometersPerHour; } if (e.NavData.HdVideoStream != null) { CanRecord = e.NavData.HdVideoStream.CanRecord; UsbKeyIsRecording = e.NavData.HdVideoStream.UsbKeyIsRecording; } if (e.NavData.Demo == null || e.NavData.HdVideoStream == null) { RequestNavData(); } }
private void UpdatePropertiesThreadSafe(NavDataReceivedEventArgs e) { lock (_threadLock) { if (Connected) { UpdateProperties(e); } } }
private void NavDataWorkerOnNavDataReceived(object sender, NavDataReceivedEventArgs e) { Dispatcher.BeginInvoke(() => UpdatePropertiesThreadSafe(e)); }