private void _PacketListener_PacketReceived(object sender, PacketInfoEventArgs e) { Application.Current.Dispatcher.Invoke((Action)(() => { var packetInfo = e.PacketInfo; if (e.PacketInfo.Latitude == null || e.PacketInfo.Longitude == null) { return; } TrackedObjectViewModel trackedObject; lock (_TrackedObjectList) { trackedObject = (from obj in _TrackedObjectList where obj.LatestPacketInfoVM.PacketInfo.Callsign == packetInfo.Callsign select obj).SingleOrDefault(); if (trackedObject == null) { trackedObject = new TrackedObjectViewModel(packetInfo); _TrackedObjectList.Add(trackedObject); } else { trackedObject.Update(packetInfo); } } if (CurrentlyTrackedObject == null) { CurrentlyTrackedObject = trackedObject; } if (trackedObject == CurrentlyTrackedObject) { MapLocationVM.TrackObject(trackedObject); if (CurrentllyTrackedObjectPacketReceived != null) { CurrentllyTrackedObjectPacketReceived(this, new PacketInfoEventArgs(packetInfo)); } } })); }
void _TrackerViewModel_CurrentllyTrackedObjectPacketReceived(object sender, PacketInfoEventArgs e) { addPushPin(e.PacketInfo); }