Example #1
0
        public void StartSolver()
        {
            worker = new BackgroundWorker();
            worker.WorkerReportsProgress = true;
            worker.ProgressChanged      += (s, e) =>
            {
                if (ProgressUpdate != null)
                {
                    ProgressUpdate(this, new ProgressArgs((string)e.UserState));
                }
            };
            worker.RunWorkerCompleted += (s, e) =>
            {
                if (Finished != null)
                {
                    Finished(this);
                }
            };
            worker.DoWork += makeMoves;


            // Is Initial
            try
            {
                if (parser.ParseScreen(this, out this.nonZeroValues))
                {
                    // Start in middle of screen
                    new Movement(new Block(Width / 2, Height / 2, BlockState.Unknown), MoveTypes.DoubleClick).Execute(parser);
                    Thread.Sleep(500);
                }
            }
            catch (ParserException ex2)
            {
                if (ProgressUpdate != null)
                {
                    ProgressUpdate(this, new ProgressArgs(ex2.Message));
                }
                return;
            }

            worker.RunWorkerAsync();
        }