Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Task.Factory.StartNew(async () =>
- {
- int size = blocksToPlace.Count();
- Block[] blocks = new Block[size];
- BlockConfig[] blockconfigs = new BlockConfig[size];
- bool[] testResults = new bool[size];
- Monitor.Enter(_lock);
- for (int i = 0; i <= size; i++)
- {
- if (_blockConfigs.TryGetValue(blocksToPlace[i].blockID, out blockconfigs[i]))
- {
- blocks[i] = new Block(blockconfigs[i], blocksToPlace[i].point, blocksToPlace[i].placerID);
- }
- else
- {
- //Tempary exit lock while awaiting results
- Monitor.Exit(_lock);
- MysqlResults<BlockConfigInfo> mysqlResults = await MySQL.tryListBlockConfig(blocksToPlace[i].blockID);
- Monitor.Enter(_lock);
- if (mysqlResults.success)
- {
- blockconfigs[i] = BlockConfig.fromBlockConfigInfo(mysqlResults.item);
- addBlockConfig(blockconfigs[i]);
- testResults[i] = _blockConfigs.TryGetValue(blocksToPlace[i].blockID, out blockconfigs[i]);
- if (testResults[i]) blocks[i] = new Block(blockconfigs[i], blocksToPlace[i].point, blocksToPlace[i].placerID);
- else blocks[i] = new Block(Program.errorBlock, blocksToPlace[i].point, blocksToPlace[i].placerID);
- }
- else
- {
- blocks[i] = new Block(Program.errorBlock, blocksToPlace[i].point, blocksToPlace[i].placerID);
- }
- }
- _blocks[blocksToPlace[i].point.x, blocksToPlace[i].point.y] = blocks[i];
- _blocksList.Add(blocks[i]);
- }
- Monitor.Exit(_lock);
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement