public async Task StartGame(bool[,] seedBoard = null)
        {
            _gameTimer.Restart();
            if (seedBoard == null)
            {
                _boardManager.InitialiseRandomBoard();
            }
            else
            {
                _boardManager.InitialiseFromSeed(seedBoard);
            }
            GameTickProcessed?.Invoke(this, new EventArgs());
            TickCount++;

            do
            {
                _boardManager.ProcessBoardTick();
                if (_gameConfiguration.RaiseRenderEvents)
                {
                    GameTickProcessed?.Invoke(this, new EventArgs());
                    await Task.Delay(_gameConfiguration.TickDelay);
                }
                TickCount++;
            } while (TickCount <= _gameConfiguration.MaxTickCount);
            _gameTimer.Stop();
        }