private void GetTileOnThread(object parameter)
{
var parameters = (object[])parameter;
if (parameters.Length != 4) throw new ArgumentException("Four parameters expected");
var tileProvider = (ITileProvider)parameters[0];
var tileInfo = (TileInfo)parameters[1];
var bitmap = (MemoryCache<byte[]>)parameters[2];
var autoResetEvent = (AutoResetEvent)parameters[3];
try
{
bitmap.Add(tileInfo.Index, tileProvider.GetTile(tileInfo));
}
catch (Exception ex)
{
Logger.Log(LogLevel.Error, ex.Message, ex);
// todo: report back through callback
}
finally
{
_queue.Remove(tileInfo.Index);
autoResetEvent.Set();
}
}