Fórum
Ver pergunta

Como cancelar e mudar o Título de uma MostraDialogoEsperaAsync?   

174 visualizações
0
0

Boas tardes.

No seguimento deste post, pergunto como se pode Cancelar uma tarefa?

Pseudo-código:

 

int intTotalItemsCount = 0;

            DialogResult result = PSO.Dialogos.MostraDialogoEsperaAsync(this, "A Gravar Fornecedores", new Action<Progress<int>, CancellationToken>((progress, cancel) =>
            {

                int intCurrentSelectedRow = 0;

                for (var row = 1; row <= priGrelhaFornecedores.Grelha.DataRowCnt; row++)
                {
                    intCurrentSelectedRow++;

                    ((IProgress<int>)progress).Report((int)(((decimal)intCurrentSelectedRow / intTotalItemsCount) * 100));

                    //code
                }

                cancel.ThrowIfCancellationRequested();

            }));

Simplesmente fazer cancel = false não funciona pois o cancel não é um bool.

Pergunto também como posso ir mudando o titulo da janela ao longo do processo?

Por exemplo, neste caso, imaginemos que queria que a mensagem em vez de dizer “A Gravar Fornecedor” queria que a janela fosse dizendo “A Gravar o Fornecedor XXX”…

Faça login para poder traduzir
V10
Marcado como spam
Criado há 5 anos e 2 meses jnatasfilipegomesferreira
j
jnatasfilipegomesferreira Jónatas Filipe Gomes Ferreira Iniciante
Comentários
Quase dois anos, e nada de resposta...
3 anos e 6 meses
byside
    1 respostas
    1
    Resposta privada

    Abaixo código para cancelar uma tarefa através do MostraDialogoEsperaAsync. Basicamente o que estava em falta era o registo do método que trata o cancelamento da operação.
    Em relação à alteração do titulo do dialogo ainda não consegui modificá-lo.

    private void simpleButton3_Click(object sender, EventArgs e)
            {
                try
                {
                    int t = 0;
    
                    PriEngine.Platform.MensagensDialogos.MostraDialogoEsperaAsync(this, "Espera", new Action<Progress<int>, CancellationToken>((progress, cancel) =>
                    {
                        t = 1;
                        
    cancel.Register(CancelaTarefa);
    
                        TestaProgressBar((IProgress<int>)progress);
                        t = 2;
                        /*int intCurrentSelectedRow = 0;
                        int maxRows = 1000;
                        for (var row = 1; row <= maxRows; row++)
                        {
                            intCurrentSelectedRow++;
                            Thread.Sleep(10);
                            ((IProgress<int>)progress).Report((int)(((decimal)intCurrentSelectedRow / maxRows) * 100));
                            //code
                        }*/
                    }));
    
                    if (t==1)
                        PriEngine.Platform.MensagensDialogos.MostraAviso($"A tarefa foi cancelada.");
                    else
                        PriEngine.Platform.MensagensDialogos.MostraAviso($"A tarefa foi concluida.");
    
                }
                catch (Exception)
                {
                    throw;
                }
            }
    
            private void CancelaTarefa()
            {
                try
                {
                    //PriEngine.Platform.MensagensDialogos.MostraAviso("A tarefa foi cancelada.");
                }
                catch (Exception)
                {
                    throw;
                }
            }
    
            private void TestaProgressBar(IProgress<int> progress)
            {
                try
                {
                    int intCurrentSelectedRow = 0;
                    int maxRows = 100;
                    for (var row = 1; row <= maxRows; row++)
                    {
                        intCurrentSelectedRow++;
                        Thread.Sleep(1);
                        progress.Report((int)(((decimal)intCurrentSelectedRow / maxRows) * 100));
                        //code
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }

     

    Faça login para poder traduzir
    Marcado como spam
    Criado há 3 anos e 2 meses vitorhugosilva
    vitorhugosilva Vitor Hugo Silva Responsiveness Member