/// <summary>
		/// Runs the next step of the process being controlled.
		/// </summary>
		/// <param name="step">
		/// The step mode for the new step.
		/// </param>
		public void Next(ControllerStepMode step)
		{
			stepMode = step;
			
			if(processThread == null || !processThread.IsAlive)
			{
				processThread = new Thread(new ThreadStart(Process));
				processThread.Priority = ThreadPriority.Lowest;
				processThread.Start();				
			}
			else if (processThread.ThreadState == ThreadState.Suspended)
			{
				processThread.Resume();				
			}
		}
        /// <summary>
        /// Runs the next step of the process being controlled.
        /// </summary>
        /// <param name="step">
        /// The step mode for the new step.
        /// </param>
        public void Next(ControllerStepMode step)
        {
            stepMode = step;

            if (processThread == null || !processThread.IsAlive)
            {
                processThread          = new Thread(new ThreadStart(Process));
                processThread.Priority = ThreadPriority.Lowest;
                processThread.Start();
            }
            else if (processThread.ThreadState == ThreadState.Suspended)
            {
                processThread.Resume();
            }
        }
		/// <summary>
		/// Metodo que se invocara para indicar al controlador que deseamos
		/// dar un nuevo paso de procesado.
		/// </summary>
		protected override void NextStep(ControllerStepMode stepMode)
		{			
			controller.Next(stepMode);
		}
 /// <summary>
 /// Metodo que se invocara para indicar al controlador que deseamos
 /// dar un nuevo paso de procesado.
 /// </summary>
 protected override void NextStep(ControllerStepMode stepMode)
 {
     controller.Next(stepMode);
 }
		protected override void NextStep (ControllerStepMode mode)
		{
			parsingNextButtonsAlign.Sensitive = false;
			controller.Next(mode);
		}
 public ControllerBase()
 {
     stepMode = ControllerStepMode.UntilEnd;
 }
 protected override void NextStep(ControllerStepMode mode)
 {
     parsingNextButtonsAlign.Sensitive = false;
     controller.Next(mode);
 }
 /// <summary>
 /// Makes the controller process more data.
 /// </summary>
 /// <param name="mode">
 /// A <see cref="ControllerStepMode"/> indicating when the controller
 /// should stop.
 /// </param>
 protected virtual void NextStep(ControllerStepMode mode)
 {
 }
		/// <summary>
		/// Makes the controller process more data.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="ControllerStepMode"/> indicating when the controller 
		/// should stop.
		/// </param>
		protected virtual void NextStep(ControllerStepMode mode)
		{
			
		}
		public ControllerBase()
		{
			stepMode = ControllerStepMode.UntilEnd;
		}