Quantcast
Channel: Tópicos
Viewing all articles
Browse latest Browse all 14700

Como copiar usando uma Progress bar

$
0
0
Olá kamaliao, A solução para o problema do bloqueio é fazeres o processo de cópia numa thread diferente da thread do UI. Podes, e deves usar BackgroundWorkers para facilitar o processo. Para resolveres o problema da contagem, como o Muryllo diz (e bem) não vais conseguir resolver com atalhos como o "CopyDirectory". Terás de iterar todos as pastas recursivamente para contabilizares os ficheiros e o tamanho (caso queiras mostrar essa informação) de cada ficheiro (podes usar o FileInfo para essa informação). Ao fazer esta contabilização, crias uma lista de ficheiros para a cópia e iteras essa lista no final da contabilização, para não gastares de novo o tempo na recursão. O racional mais simples é algo como: se existirem pastas dentro desta pasta, entra nelas primeiro e repete até não existirem pastas. Quando aí chegar, itera os ficheiros. Ficas com uma listagem "top-down" do ponto de vista da árvore de ficheiros. O Windows processa a coisa de forma semelhante: primeiro calcula o trabalho, depois despacha-o. Poderias ainda fazer contabilização byte a byte, mas penso que não interessa neste caso. Portanto a tua progressbar teria como máximo o número de itens que foram contabilizados. Ao iterares a lista final, vais aumentar o valor da progressbar em 1. Com este método terás também de resolver a criação da cadeia de pastas no destino, mas isso torna a coisa mais interessante

Viewing all articles
Browse latest Browse all 14700