Esempio n. 1
0
        /// <summary>
        /// 获取图片
        /// </summary>
        /// <param name="url">图片地址</param>
        /// <param name="action">图片生成后的回调</param>
        /// <returns>默认图片</returns>
        public virtual BitmapSource Get( string url, ImageCreateCallback action )
        {
            QueueItem item = new QueueItem() { Action = action, Url = url };
            BackgroundWorker worker = null;
            lock ( _waitingQueue ) {
                _waitingQueue.Enqueue( item );
                if ( !_isThreadActivated ) {
                    _isThreadActivated = true;
                    worker = new BackgroundWorker();
                }
            }

            if ( worker != null ) {
                worker.DoWork += ( ( send, ev ) => StartThread() );
                worker.RunWorkerCompleted += ( ( s, e ) => {
                    lock ( _waitingQueue ) {
                        _isThreadActivated = false;
                    }
                } );
                worker.RunWorkerAsync();
            }
            return BitmapCache.DEFAULT_IMAGE;
        }
Esempio n. 2
0
 public override BitmapSource Get( string url, ImageCreateCallback action )
 {
     BitmapSource retBitmap = null;
     if ( _cache.Contains( url ) ) {
         retBitmap = _cache.Load( url );
         if ( retBitmap != null && action != null ) {
             action( retBitmap );
             return retBitmap;
         }
     }
     return base.Get( url, action );
 }