/// <summary>
        /// Create a new CAPTCHABreaker with a specified solver and segmenter.
        /// </summary>
        /// <param name="solveMethod">The method used for recognizing patterns that have been extracted from an image.</param>
        /// <param name="segmentMethod">The method to use for segmenting an image into patterns.</param>
        public CAPTCHABreaker(Solver solveMethod, SegmentMethod segmentMethod)
        {
            segmenter = new Segmenter();
            segmenter.SegmentationMethod = segmentMethod;

            solver = solveMethod;
            solver.OnTraininProgressChanged += new Action<object, OnTrainingProgressChangeEventArgs>(solver_OnTraininProgressChanged);
            solver.OnTrainingComplete += new Action<object, PatternResult>(solver_OnTrainingComplete);
            solver.OnTestingComplete += new Action<object, PatternResult>(solver_OnTestingComplete);

            asyncSolver = new BackgroundWorker();
            asyncSolver.DoWork += new DoWorkEventHandler(asyncSolver_DoWork);
            asyncSolver.RunWorkerCompleted += new RunWorkerCompletedEventHandler(asyncSolver_RunWorkerCompleted);

            asyncSetCreater = new BackgroundWorker();
            asyncSetCreater.DoWork += new DoWorkEventHandler(asyncSetCreater_DoWork);
            asyncSetCreater.RunWorkerCompleted += new RunWorkerCompletedEventHandler(asyncSetCreater_RunWorkerCompleted);
            asyncSetCreater.WorkerReportsProgress = true;
            asyncSetCreater.ProgressChanged += new ProgressChangedEventHandler(asyncSetCreater_ProgressChanged);

            asyncFullTest = new BackgroundWorker();
            asyncFullTest.DoWork += new DoWorkEventHandler(asyncFullTest_DoWork);
            asyncFullTest.RunWorkerCompleted += new RunWorkerCompletedEventHandler(asyncFullTest_RunWorkerCompleted);
        }
 /// <summary>
 /// Specify the solver method that will be used to recognize segmented patterns.
 /// </summary>
 public void SetSolverMethod(Solver solveMethod)
 {
     solver = solveMethod;
     solver.OnTraininProgressChanged += new Action<object, OnTrainingProgressChangeEventArgs>(solver_OnTraininProgressChanged);
     solver.OnTrainingComplete += new Action<object, PatternResult>(solver_OnTrainingComplete);
     solver.OnTestingComplete += new Action<object, PatternResult>(solver_OnTestingComplete);
 }