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);
                    }
                }
            }
        }