public GenericRasterTileDownloader(
     MapControl.WPF.TileSource tileSource,
     OverlapBorderPresence overlapBordersPresence,
     Dispatcher uiThreadDispatcher)
 {
     tileUriDelegate         = tileId => VectorMath.TileSourceGetUriWrapper(tileSource, tileId);
     tileImageDelegate       = tileSource.DirectImage is null ? (tileId => tileSource.GetImage(tileId.X, tileId.Y, tileId.LevelOfDetail - 8)) : (TileImageDelegate)(tileId => tileSource.DirectImage(tileId.X, tileId.Y, tileId.LevelOfDetail - 8));
     this.tileSource         = tileSource;
     OverlapBorderPresence   = overlapBordersPresence;
     this.uiThreadDispatcher = uiThreadDispatcher;
 }
        public BitmapImageRequest CreateRequest(TileImageDelegate getImage, NetworkPriority networkPriority, object userToken, BitmapImageRequestCompletedHandler callback)
        {
            var bitmapImageRequest = new BitmapImageRequest(getImage, userToken, callback)
            {
                NetworkPriority = networkPriority
            };

            lock (pendingRequests)
                pendingRequests.Add(bitmapImageRequest);
            thereMayBeWorkToDo.Set();
            return(bitmapImageRequest);
        }
 public BitmapImageRequest(TileImageDelegate getImage, object userToken, BitmapImageRequestCompletedHandler callback)
 {
     GetImage  = getImage;
     UserToken = userToken;
     Callback  = callback;
 }