Example #1
0
        public void StartComputing()
        {
            CancelAnyComputations();

            RepopulateAnswers();

            _computeThread = new Thread(ComputeNumbers);
            _computeThread.Start();

            ComputationStatusChanged?.Invoke(this, EventArgs.Empty);
        }
Example #2
0
        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;
            }
        }