示例#1
0
        /// <summary>
        /// Loaded file from a cache to event arguments.
        /// </summary>
        /// <param name="fileName">File name.</param>
        /// <param name="callback">Callback which should be called to return tile if it is available or null.</param>
        public override void LoadAsync(string fileName, Action <byte[]> callback)
        {
            CacheRecord record = this.GetCacheRecord(fileName);

            byte[] tile = null;
            if (record == null)
            {
                ICacheRecordMetadata metaData = this.LoadFileMetadata(fileName);
                if (metaData != null && metaData.Expires >= DateTime.Now)
                {
                    Stream stream = this.OpenCacheStream(fileName);
                    if (stream.Length == 0)
                    {
                        stream.Dispose();
                    }
                    else
                    {
                        AsyncStreamOperations.LoadAsync(stream, callback);
                        return;
                    }
                }
            }
            else
            {
                tile = record.TileBody;
            }

            callback(tile);
        }