public void TrackObject(TrackedObjectViewModel trackedObjectVM) { if (trackedObjectVM.LatestPacketInfoVM.PacketInfo.Latitude == null || trackedObjectVM.LatestPacketInfoVM.PacketInfo.Longitude == null) { throw new ArgumentException("Lattitude and Longitude cannot be null.", "trackedObjectVM"); } Latitude = trackedObjectVM.LatestPacketInfoVM.PacketInfo.Latitude.Value; Longitude = trackedObjectVM.LatestPacketInfoVM.PacketInfo.Longitude.Value; if (TrackingObject != null) { TrackingObject(this, EventArgs.Empty); } }
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)); } } })); }