コード例 #1
0
        private async void btnGerarRedirects_Click(object sender, EventArgs e)
        {
            if (FuncaoBotaoProcessamento == BotaoProcessamento.IniciarProcessamento)
            {
                if (string.IsNullOrEmpty(_caminhoSitemapAntigo) || string.IsNullOrEmpty(_caminhoSitemapAtual))
                {
                    MessageBox.Show("Defina os dois arquivos de sitemap para continuar!", "Operação não pôde continuar", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                // Mudar função deste botão para Cancelar
                FuncaoBotaoProcessamento = BotaoProcessamento.CancelarProcessamento;

                //Acompanhar progresso da tarefa
                Progress <ProgressoDaTarefa> progressoDaTarefa = new Progress <ProgressoDaTarefa>();
                progressoDaTarefa.ProgressChanged += ProgressoDaTarefa_ProgressChanged;
                var assitirProgresso = System.Diagnostics.Stopwatch.StartNew();

                try
                {
                    //Iniciar processamento da Tarefa
                    await IniciarProcessamentoAsync(progressoDaTarefa, _cancelarProcessamento.Token);
                }
                catch (OperationCanceledException)
                {
                    this.UseWaitCursor       = false;
                    _cancelarProcessamento   = new CancellationTokenSource();
                    pgbProgresso.Value       = 0;
                    lblEtapaAtual.Text       = "Operação Cancelada pelo Usuário!";
                    lblEtapaAtual.BackColor  = Color.LightPink;
                    FuncaoBotaoProcessamento = BotaoProcessamento.IniciarProcessamento;
                }
                catch (Exception erro)
                {
                    this.UseWaitCursor = false;
                    MessageBox.Show("Aconteceu um erro: " + erro.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    pgbProgresso.Value       = 0;
                    lblEtapaAtual.Text       = "Aconteceu um erro! Tente novamente";
                    lblEtapaAtual.BackColor  = Color.LightPink;
                    FuncaoBotaoProcessamento = BotaoProcessamento.IniciarProcessamento;
                }

                assitirProgresso.Stop();
            }
            else if (FuncaoBotaoProcessamento == BotaoProcessamento.CancelarProcessamento)
            {
                _cancelarProcessamento.Cancel();
            }
        }
コード例 #2
0
 /// <summary>
 /// Formata a aparência do botão de processamento para assumir a função de Iniciar ou Cancelar o processamento
 /// </summary>
 /// <param name="pFuncaoBotao"></param>
 private void FormatarBotaoDeProcessamento(BotaoProcessamento pFuncaoBotao)
 {
     if (pFuncaoBotao == BotaoProcessamento.IniciarProcessamento)
     {
         btnGerarRedirects.BackColor = SystemColors.Highlight;
         btnGerarRedirects.Text      = "Gerar Redirects";
         btnGerarRedirects.Image     = Properties.Resources.icone_gerar_redirect;
     }
     else if (pFuncaoBotao == BotaoProcessamento.CancelarProcessamento)
     {
         btnGerarRedirects.BackColor = Color.Firebrick;
         btnGerarRedirects.Text      = "Cancelar";
         btnGerarRedirects.Image     = Properties.Resources.icone_cancelar;
     }
 }
コード例 #3
0
        private void ProgressoDaTarefa_ProgressChanged(object sender, ProgressoDaTarefa e)
        {
            pgbProgresso.Value = e.Progresso;
            lblEtapaAtual.Text = e.EtapaAtual;

            if (e.Progresso < 100)
            {
                this.UseWaitCursor       = true;
                FuncaoBotaoProcessamento = BotaoProcessamento.CancelarProcessamento;
                lblEtapaAtual.BackColor  = Color.LightGray;
            }
            else
            {
                this.UseWaitCursor       = false;
                FuncaoBotaoProcessamento = BotaoProcessamento.IniciarProcessamento;
                lblEtapaAtual.BackColor  = Color.LightGreen;
            }
        }