public ContabilProcessController(ContabilProcessParameters parameters)
 {
     this._parameters = parameters;
     this.AsynchronousExecution += new AsynchronousExecutionHandler(ContabilProcessController_AsynchronousExecution);
     this.AsynchronousExecutionAborted +=
         new AsynchronousExecutionAbortedHandler(ContabilProcessController_AsynchronousExecutionAborted);
 }
        private void btnProcessar_Click(object sender, EventArgs e)
        {
            if (!this.ValidarAntesProcessamento())
                return;

            if (saveFileDialog1.ShowDialog() != DialogResult.OK)
                return;

            if (File.Exists(saveFileDialog1.FileName))
            {
                MessageBox.Show("Nome de arquivo já em uso. Selecione um nome diferente.");
                return;
            }

            lblProgresso.Visible = true;
            progressBar1.Visible = true;

            ContabilProcessParameters parameters = new ContabilProcessParameters();
            
            parameters.CodigoEmpresa = cbxEmpresas.SelectedValue.ToString();
            parameters.DataInicial = DateTimeHelper.GetFirstDayOfTheMonth(dtpInicio.Value);
            parameters.DataFinal = DateTimeHelper.GetLastDayOfTheMonth(dtpFim.Value);
            parameters.CaminhoArquivo = saveFileDialog1.FileName;
            
            if (rdbContabilDiarioGeral.Checked)
                parameters.TipoArquivo = TipoArquivo.ContabilDiarioCompleto;
            else if (rdbContabilDiarioEscrituracao.Checked)
                parameters.TipoArquivo = TipoArquivo.ContabilDiarioEscrituracaoResumida;
            else if (rdbContabilDiarioAuxiliar.Checked)
                parameters.TipoArquivo = TipoArquivo.ContabilDiarioAuxiliar;
            else if (rdbContabilRazaoAuxiliar.Checked)
                parameters.TipoArquivo = TipoArquivo.ContabilRazaoAuxiliar;
            else if (rdbContabilLivroBalancetes.Checked)
                parameters.TipoArquivo = TipoArquivo.ContabilLivroBalancetes;

            ContabilProcessController controller = new ContabilProcessController(parameters);
            controller.Initialize();
            ExecuteAsynchronousControllerDelegate execucaoController =
                new ExecuteAsynchronousControllerDelegate(ExecuteContabilProcessController);
            execucaoController.BeginInvoke(controller, null, null);
        }