public void StartComputing() { CancelAnyComputations(); RepopulateAnswers(); _computeThread = new Thread(ComputeNumbers); _computeThread.Start(); ComputationStatusChanged?.Invoke(this, EventArgs.Empty); }
public void CancelAnyComputations() { if (_cancelInProgress) { return; } lock ( _cancelLock ) { _cancelInProgress = true; if (IsComputationInProgress()) { _puzzleSolver?.Cancel(); _computeThread?.Join(); _computeThread = null; ComputationStatusChanged?.Invoke(this, EventArgs.Empty); } _cancelInProgress = false; } }