Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2014 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Pessoal, gostaria de saber como vocês fazem para "esperar" a resposta do arquivo sai.txt. Pois possuo uma aplicação em MS Access e utilizo o código abaixo:

  While Dir(CurrentProject.Path & "\sai.txt") = vbNullString
  Wend

Esse "While" roda o loop enquanto o arquivo sai.txt for nulo. Após isso, ele prossegue com o código para ler a resposta do ACBrMonitor.

O Problema é que as vezes essa resposta demora mais que o normal, o tempo para gerar o INI, converter para XML, Assina-lo, Enviar e Receber o retorno da Sefaz...

Quando demora mais que o normal, o aplicativo, dá crash, como em qualquer outra aplicação, uma vez que creio que seja o próprio Windows que crasha. Mas eu gostaria de saber se é dessa forma que vocês fazem, se estou no caminho certo ou se existe uma "Base" do código diferente, mais dinâmica que não cause esse erro...

Postado
40 minutos atrás, IuriEmanuel disse:

Pessoal, gostaria de saber como vocês fazem para "esperar" a resposta do arquivo sai.txt. Pois possuo uma aplicação em MS Access e utilizo o código abaixo:


  While Dir(CurrentProject.Path & "\sai.txt") = vbNullString
  Wend

Esse "While" roda o loop enquanto o arquivo sai.txt for nulo. Após isso, ele prossegue com o código para ler a resposta do ACBrMonitor.

O Problema é que as vezes essa resposta demora mais que o normal, o tempo para gerar o INI, converter para XML, Assina-lo, Enviar e Receber o retorno da Sefaz...

Quando demora mais que o normal, o aplicativo, dá crash, como em qualquer outra aplicação, uma vez que creio que seja o próprio Windows que crasha. Mas eu gostaria de saber se é dessa forma que vocês fazem, se estou no caminho certo ou se existe uma "Base" do código diferente, mais dinâmica que não cause esse erro...

Eu uso o VB6

Tenho uma função quase do mesmo jeito, tenho um loop mas com um (sleep( 1000)) pra esperar um tempo antes da próxima consulta do arquivo e um limite de tempo pra o caso do arquivo não ser criado. Dessa forma ele fica esperando o tempo que for necessário.

10190   RetVal = Dir("C:\nfce-app\acbrSAIDA\Pedido-resp.TXT")		' Verifica o arquivo
10195   Do While (RetVal <> "Pedido-resp.TXT")						'Entra no loop  com a condição de não existir o arquivo
10200       Sleep (1000)											'Espera 1 segundo antes de executar a proxima linha
10205       RetVal = Dir("C:\nfce-app\acbrSAIDA\Pedido-resp.TXT")	'Verifica o arquivo denovo 
  
10210       If temp8 = "7" And RetVal <> "Pedido-resp.TXT" Then		'caso o tempo de execução da rotina for maior que 7 segundos e ainda não exista o arquivo 
10215           GoTo saidoloop										'		eu desisto de le-lo.
10220       End If													'
10225       temp8 = CCur(temp8) + CCur(1)							' Incrementa a contagem do tempo
  
            DoEvents												'Deixa o Windows fazer alguma coisa 
10230   Loop														'
10235 saidoloop:													'

 

  • Curtir 1
  • Obrigado 1
Postado

Excelente, Juan!

 O Sleep aliado ao DoEvents funciona muito bem! Muito obrigado, talvez só não utilizarei o tempo de espera, pois de qualquer forma quero que a aplicação espere o arquivo, pois preciso que o mesmo retorne a Chave ou a resposta ao usuário final, pois caso esse tempo estoure, a aplicação não receberá a informação... Acho que dá certo desse jeito também, né?

  • Curtir 1
Postado (editado)
2 horas atrás, IuriEmanuel disse:

Excelente, Juan!

 O Sleep aliado ao DoEvents funciona muito bem! Muito obrigado, talvez só não utilizarei o tempo de espera, pois de qualquer forma quero que a aplicação espere o arquivo, pois preciso que o mesmo retorne a Chave ou a resposta ao usuário final, pois caso esse tempo estoure, a aplicação não receberá a informação... Acho que dá certo desse jeito também, né?

:D Que Ótimo , muito bom ajudar.

 

Da certo sim, o tempo é um incremento.

Pense no caso por exemplo de o Acbrmonitor travar e não gerar o arquivo de resposta nunca(O que já aconteceu em clientes meus). Eu gosto de ter um tratamento pra o programa não entrar em um loop infinito.

Editado por JHUANZITOLLL
  • Este tópico foi criado há 2014 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.