ESPERAR UM TEMPO ENQUANTO COMPACTAR PARA CONTINUAR

AMELINHACODE 26/07/2022 23:22:41
#500250
Boa noite Pessoal

Tenho um codigo que vai pegar uma pasta no meu sistema, compactar e enviar por email..

A ideia seria essa ordem:
1. Seleciona Pasta ok
2. Compacta a pasta ok
3. Pede o e-mail para enviar (e apos clicar no botão OK envia)

Porem, quando executo

"compacta
Shell xWinRar & " a -ep1 " & FullPathZip & " " & PathToCompress, vbNormalFocus ", vbHide

"pede o e-mail
emailDestino = InputBox("Informe o Email do destinatario", "Envio de Email", rCont!Email)
"depois envia


Preciso dar uma pausa de uns 30 segundos antes dele pedi o e-mail.... pq a maioria das vezes ele tá compactando o arquivo ainda quando o imputbox pedindo o email aparece e logo some pq a janela de compactar sobrepõem ela.

Precisar fazer o comando de compactar... esperar 30 segundos e só depois aparecer o imputbox
KERPLUNK 27/07/2022 01:36:28
#500252
O mais certo não seria nem esperar um período de tempo, isso pode variar bastante de máquina pra máquina. Eu, nesse caso, usaria um approach meio complexo mas com resultados melhores. É parecido com o que o FileSystemWatcher do .NET faz. Esse aqui
LUIS2014 27/07/2022 10:54:01
#500255
Resposta escolhida
Não seria mais fácil se ficar monitorando a pasta se o arquivo existe?

"compacta
Shell xWinRar & " a -ep1 " & FullPathZip & " " & PathToCompress, vbNormalFocus ", vbHide

"entra em loop até a criação do arquivo
Do While Dir$("c:\arquivo.rar") = ""
Sleep (200)
Loop

"pede o e-mail
emailDestino = InputBox("Informe o Email do destinatario", "Envio de Email", rCont!Email)
"depois envia
PLUGSOFTSM 31/07/2022 20:50:34
#500270
Não seria mais interessante colocar numa thread e monitorar o fim da thread e só depois disponibilizar a informação do email. Com a vantagem que se a thread for executada em segundo plano, poderá ser disparada enquanto outras tarefas são executadas...
AMELINHACODE 15/08/2022 20:18:56
#500312
Citação:

:
O mais certo não seria nem esperar um período de tempo, isso pode variar bastante de máquina pra máquina. Eu, nesse caso, usaria um approach meio complexo mas com resultados melhores. É parecido com o que o FileSystemWatcher do .NET faz. Esse aqui


Como seria em vb6?
AMELINHACODE 15/08/2022 20:21:32
#500313
Citação:

:
Não seria mais fácil se ficar monitorando a pasta se o arquivo existe?

"compacta
Shell xWinRar & " a -ep1 " & FullPathZip & " " & PathToCompress, vbNormalFocus ", vbHide

"entra em loop até a criação do arquivo
Do While Dir$("c:arquivo.rar") = ""
Sleep (200)
Loop

"pede o e-mail
emailDestino = InputBox("Informe o Email do destinatario", "Envio de Email", rCont!Email)
"depois envia



Deu um loop infinito
Tópico encerrado , respostas não são mais permitidas