PROCESSO ESPERAR OUTRO TERMINAR

ALTAIR148 30/05/2012 22:17:07
#403186
Boa noite,

Pessoal, estou com uma dúvida meio [Ô]boba[Ô], eu tenho uma função que lista subpastas de um determinado diretório para compacta-lás, o problema é que as vezes ele não espera um arquivo terminar de ser compactado e passa já para o outro, ai um fica [Ô]atropelando[Ô] os outros e acaba dando erro. O que que eu posso fazer um processo esperar o outro terminar? Um detalhe é que o problema ocorre pq estou usando threads, para não congelar a tela.


Assim eu percorro as pastas que tem no listbox e chamo a rotina de compactação

 
Private Sub novalista()
For A = 0 To ListBox1.Items.Count - 1
IDArquivo = ListBox1.Items(A).ToString
Dim DR1 As Thread
DR1 = New Thread(AddressOf CompactaPasta)
DR1.Start()
Next
End Sub


Essa é a rotina de compactação

Private Sub CompactaPasta()
Arquivo = txtCaminhoImagens.Text & [Ô]\[Ô] & IDArquivo [ô]Monta o nome do arquivo para ser compactado
Dim zip As New Zip.ZipFile(txtCaminhoImagens.Text & [Ô]\[Ô] & IDArquivo & [Ô].zip[Ô])
zip.AddDirectory(Arquivo)
zip.Save()
Directory.Delete(Arquivo, True) [ô]Exclui a pasta após ela ser compactada.
End Sub


ALEVALE 31/05/2012 08:22:04
#403202
Resposta escolhida
Altair só uma dúvida mas pq fazer isso em todos os diretório não pode apenas pegar o diretório principal ?

Já tentou dessa forma ?

http://support.microsoft.com/kb/305368/pt
Mas não é com thread.

Essa espera uma thread acabar para começar outra.
http://www.xtremevbtalk.com/showthread.php?t=159864
http://stackoverflow.com/questions/427335/how-to-wait-for-a-thread-to-finish-its-work

ALTAIR148 31/05/2012 08:41:38
#403203
Citação:

Altair só uma dúvida mas pq fazer isso em todos os diretório não pode apenas pegar o diretório principal ?


Então, esses pastas são criadas de forma dinâmica, então elas são criadas automaticamente, em vários momentos, e elas depois são enviadas via e-mail automaticamente, e todas tem que ir em e-mails separados.


Obrigado ALEVALE, agora eu não tenho como testar, mas assim que chegar em casa eu testo e posto o resultado.

Vlw.
Tópico encerrado , respostas não são mais permitidas