private void RequestImageDownload(Uri imageUri, WeakReference imageSourceRef) { if (imageUri == null || imageSourceRef == null || imageSourceRef.Target == null) { return; } lock (_pendingRequests) { PrunePendingRequests(); if (_pendingRequests.ContainsKey(imageUri)) { ImageRequest request = _pendingRequests[imageUri]; lock (request) { _pendingRequests[imageUri].SourceRefs.Add(imageSourceRef); } } else { ImageRequest request = new ImageRequest(imageUri); request.Completed += OnImageRequestCompleted; request.SourceRefs.Add(imageSourceRef); _pendingRequests[imageUri] = request; try { request.Start(); } catch (Exception) { _pendingRequests.Remove(imageUri); } } } }