private async void SolveSudoku(object sender, RoutedEventArgs e) { solving = true; ring.IsActive = true; status.Text = "Solving . . ."; animation.Text += "Current board: \n\n"; Printboard(sudoku); await Task.Delay(1000); sudoku = await Task.Run(() => NewBoard.Solve(sudoku)); if (Board.solvable == false) { ring.IsActive = false; status.Text = "Sudoku cannot be solved!"; Updateboard(sudoku); solving = false; } else { if (sudoku[0][0][0] == 0) { ring.IsActive = false; status.Text = "Invalid sudoku!"; solving = false; sudoku = NewBoard.Createboard(); Updateboard(sudoku); } else { ring.IsActive = false; status.Text = "Succesfully solved!"; Updateboard(sudoku); solving = false; } } }