private void OnImageCacheUpdated(object sender, EventArgsImage <BitmapImage> args) { lock (iRegisteredCallbacks) { Dictionary <string, List <Action <BitmapImage> > > callbacksDictionary = iRegisteredCallbacks; string key = args.Uri; if (callbacksDictionary.ContainsKey(key)) { List <Action <BitmapImage> > callbackList = callbacksDictionary[key]; callbacksDictionary.Remove(key); foreach (Action <BitmapImage> callback in callbackList) { callback.Invoke(args.Image.Image); } } } }
private void ImageAddedHandler(object sender, EventArgsImage <Bitmap> e) { lock (iLockObject) { if (iImageCache != null && e.Uri == iUri) { e.Image.IncrementReferenceCount(); iImageCache.Invoker.BeginInvoke((Action)(() => { lock (iLockObject) { if (iImageCache != null && e.Uri == iUri && !iDisposed) { SetImage(e.Image); } e.Image.DecrementReferenceCount(); } })); } } }