Progress Bar durante compactação de diretório

30/09/2008

0

Acompanhei uma video aula sobre compactação e descompactação de arquivos e diretório e gostaria de saber se alguém saberia como utilizar uma progress bar durante a execução desta ação de descompactação ou compactação. Acontece que durante este proceso o mouse fica com a ampulheta parecendo estar congelado o programa, quando na verdade ele está apenas fazendo seu trabalho.

Obrigado

Pestana Jr


Pestanajr

Pestanajr

Responder

Posts

03/10/2008

Codename.v

A progress bar funciona da seguinte maneira:

Vamos supor que você tenha um Form chamado FormExemplo e que este Form possua um componente ProgressBar e um componente Button chamados respectivamente pbExemplo e btnProcessar. Sendo assim, segue o código de exemplo.

/*
Evento Load do Form chamado para inicializar algumas propriedades da ProgressBar.
*/
private void FormExemplo_Load(object sender, EventArgs e)
{
        /*
        Algumas das principais propriedades da ProgressBar são
        inicializadas aqui. A propriedade Minimum corresponde ao
        valor inicial da ProgressBar. Seu valor default é 0 que representa
        o inicio da barra.
        */
        pbExemplo.Minimum = 0;
        
        /*
        A propriedade Maximum representa o número maximo de passos
        realizados pela ProgressBar.
        */
        pbExemplo.Maximum = 100;

        /*
        Por ultimo a propriedade Step representa de quantos em quantos
        passos a ProgressBar sera incrementada.
        */
        pbExemplo.Step = 1;
}

/*
Evento de Click do botão btnProcessar que realiza um processo de contagem até 10000 incremento a ProgressBar.
*/
private void btnProcessar_Click(object sender, EventArgs e)
{
        /*
        Loop for que realiza a contagem de 0 a 9999.
        */
         for (int contador = 0; contador < 10000; contador++)
         {
                /*
                Se a variável contador mod 100 for igual a 2, ou seja, se
                ela for igual a 100, sera chamado o método PerformStep da
                ProgressBar que utiliza o valor da propriedade Step para
                incrementar a barra. Em seguida chamamos o método Sleep
                da classe Thread apenas para que o processo possa ser
                observado. Obs.: O método Sleep não tem nada a ver com
                a ProgressBar.
                */
                if ((contador ¬ 100) == 2)
                {
                    pbExemplo.PerformStep();
                    System.Threading.Thread.Sleep(40);
                }
         }
}


Sendo assim, estamos incrementando a barra toda vez que contador for igual a 100 até que o mesmo chgue em 9999, ou seja, 100 x 100 = 10000. Concluímos então que foram realizados 100 passos de um em um até que fosse atingido o valor maximo da barra.

Para a sua compactação seria mais ou menos a mesma coisa só que você teria que guardar dentro da propriedade Maximum o tamanho do arquivo que está a ser compactado (se não me engano :oops:).
Seria uma boa se você postasse algum código.

Abraços!


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar