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