/// <summary> /// Processes the successful completion of a picture lookup operation on the background thread. /// </summary> /// <param name="lookupPictureDetail"></param> private void ApplyPictureLookup(LookupPictureDetail lookupPictureDetail) { var fetchedDetail = GetFetchedDetailUnderLock(lookupPictureDetail.Icao); if (fetchedDetail != null) { var detail = fetchedDetail.Detail; if (detail != null) { var pictureDetail = lookupPictureDetail.Result; var pictureDetailChanged = false; if (detail.Picture == null) { pictureDetailChanged = pictureDetail != null; } else { pictureDetailChanged = !detail.Picture.Equals(pictureDetail); } if (pictureDetailChanged) { fetchedDetail.Detail.Picture = pictureDetail; OnFetched(new EventArgs <AircraftDetail>(detail)); } } } }
/// <summary> /// Called when a picture needs to be fetched. /// </summary> /// <param name="lookupPictureDetail"></param> private void PictureLookupThread_ProcessLookup(LookupPictureDetail lookupPictureDetail) { var lookupResult = _PictureManager.FindPicture(_PictureFolderCache, lookupPictureDetail.Icao, lookupPictureDetail.Registration, lookupPictureDetail.PictureDetail); lock (_PictureLookupResultsSyncLock) { lookupPictureDetail.Result = lookupResult; _PictureLookupResults.Add(lookupPictureDetail); } }