public TileGenerator(MapConfig config)
 {
     _mapConfig      = config;
     _source         = ProviderFactory.CreateSourceProvider(config);
     _outputStrategy = ProviderFactory.CreateOutputStrategy(config);
     _outputStrategy.Init(config.SavePath);
     _worker           = new Core.QueueTaskWorker <TileCoordWrap>(config.RunThreadCount, GetTile, true);
     _totalTile        = _source.TileGrid.TotalTile;
     _lastTiles        = new Core.LimitedQueue <Core.TileCoord>(config.RunThreadCount);
     _successTileIndex = config.Result.SuccessTiles;
     _currTileIndex    = config.Result.LastTileIndex;
 }