ERRO AO GRAVAR MUITAS VEZES NUM ARQUIVO PENDRIVE

 Tópico anterior Próximo tópico Novo tópico

ERRO AO GRAVAR MUITAS VEZES NUM ARQUIVO PENDRIVE

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#496236 - 11/02/2021 22:26:08

FIREBULLBR
RIO DE JANEIRO
Cadast. em:Dezembro/2020


Última edição em 11/02/2021 22:27:42 por FIREBULLBR

Oi, estou criando um aplicativo que precisa escrever muitas vezes em um arquivo, aproximadamente 200... Ele faz o seguinte:

For i = 0 to 200
   System.IO.File.WriteAllText(arquivo, dados)
Next

O problema é que: fazendo isso no meu PC (no meu disco local), consigo escrever em qualquer arquivo, mas, quando tentei num pendrive, dá erro de exceção dizendo que o processo não pode acessar o arquivo porque ele está sendo usado por outro processo. A questão é que o método WriteAllText, de System.IO.File, que eu saiba, grava e fecha automaticamente o arquivo... Eu diminuí o loop para 0 to 5 e funcionou!! Então creio que o problema seja o 200, mas realmente eu preciso gravar um alto número de vezes... Você conhece alguma solução?




#496238 - 12/02/2021 01:49:35

JABA
CABO FRIO
Cadast. em:Agosto/2005


Última edição em 12/02/2021 02:01:22 por JABA

Teste com um sleep:

For i = 0 to 200
   System.IO.File.WriteAllText(arquivo, dados)
   Thread.Sleep(100);
Next


OBS: Caso esteja demorando muito para gravar dessa forma, tu pode diminuir o valor contido no parâmetro.

_______________________________________________________________________________________________

Se a alma ou esprito so imateriais, como eles fazem para se localizar quando o corpo est em movimento?



#496240 - 12/02/2021 11:19:22

WCOSTA
VASSOURAS
Cadast. em:Dezembro/2003


Membro da equipe

Última edição em 12/02/2021 11:19:57 por WCOSTA

Rapaz,
O pendrive não é uma mídia que possa ser usado para tantas gravações em curto tempo. De repente, um cartão de memória (SD ou mini SD) tipo Classe A possa resolver isso.


AntSoft Systems On Demand



#496244 - 12/02/2021 13:47:41

FIREBULLBR
RIO DE JANEIRO
Cadast. em:Dezembro/2020


Última edição em 12/02/2021 13:48:22 por FIREBULLBR

Muito oBrigado pelas respostas, amigos... Só vocês mesmo para me salvarem! <3




#496247 - 12/02/2021 16:15:52

OCELOT
SOROCABA
Cadast. em:Março/2012


A implementação desse método pelo framework é praticamente a seguinte
Using sw As StreamWriter = New StreamWriter(path)
    sw.Write(contents)
End Using

Então de forma alguma deveria dar problema a menos que algum outro programa esteja acessando o mesmo arquivo ou que você esteja tentando fazer isso de mais de uma thread ao mesmo tempo.

Uma outra coisa que pode causar o problema é de algum programa antivirus ter travado o arquivo para verificar ele





#496250 - 12/02/2021 17:37:45

FIREBULLBR
RIO DE JANEIRO
Cadast. em:Dezembro/2020


Citação:
:
A implementação desse método pelo framework é praticamente a seguinte
Using sw As StreamWriter = New StreamWriter(path)
    sw.Write(contents)
End Using

Então de forma alguma deveria dar problema a menos que algum outro programa esteja acessando o mesmo arquivo ou que você esteja tentando fazer isso de mais de uma thread ao mesmo tempo.

Uma outra coisa que pode causar o problema é de algum programa antivirus ter travado o arquivo para verificar ele


Eu também achei MUITO estranho isso! Eu desativei todos os verificadores e antivírus, e testei três métodos diferentes para escrever no arquivo... Até mesmo esse que você sugeriu, testei ontem, mas, acho que infelizmente não posso gravar muitas vezes!



#496251 - 12/02/2021 19:09:23

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Citação:
:
A implementação desse método pelo framework é praticamente a seguinte
Using sw As StreamWriter = New StreamWriter(path)
    sw.Write(contents)
End Using

Então de forma alguma deveria dar problema a menos que algum outro programa esteja acessando o mesmo arquivo ou que você esteja tentando fazer isso de mais de uma thread ao mesmo tempo.

Uma outra coisa que pode causar o problema é de algum programa antivirus ter travado o arquivo para verificar ele


Não necessariamente. Temos aqui vários fatores que podem influenciar: GAC, buffers de disco/memória e até o modo de particionamento pode afetar. A coisa não é tão linear como pode parecer.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#496252 - 12/02/2021 19:49:14

JABA
CABO FRIO
Cadast. em:Agosto/2005


O teste com sleep não funcionou?

_______________________________________________________________________________________________

Se a alma ou esprito so imateriais, como eles fazem para se localizar quando o corpo est em movimento?



#496253 - 12/02/2021 20:21:18

FIREBULLBR
RIO DE JANEIRO
Cadast. em:Dezembro/2020


Citação:
:
O teste com sleep não funcionou?

Nem com sleep! Gente, estou perdido kkkk. Tentei um sleep até de 1000, mas, infelizmente, 'o processo não pode acessar o arquivo porque ele está sendo usado por outro processo' isso aparece a partir da vez 155 aproximadamente (OBS: o código NÃO muda durante o loop em NENHUM momento)... Deus do VB, me ajuda!



#496254 - 12/02/2021 20:45:39

JABA
CABO FRIO
Cadast. em:Agosto/2005


Às vezes, até para desmontar o pendrive dá máquina, acontece isso. Já que você precisar gravar algo seguidas vezes, por que não faz isso fora do pendrive, como na memória ou hd, e quando encerrar, joga o arquivo completo para ele.

_______________________________________________________________________________________________

Se a alma ou esprito so imateriais, como eles fazem para se localizar quando o corpo est em movimento?



#496258 - 13/02/2021 00:14:46

FIREBULLBR
RIO DE JANEIRO
Cadast. em:Dezembro/2020


Citação:
:
Às vezes, até para desmontar o pendrive dá máquina, acontece isso. Já que você precisar gravar algo seguidas vezes, por que não faz isso fora do pendrive, como na memória ou hd, e quando encerrar, joga o arquivo completo para ele.

Pq estou criando um destruidor de arquivos, e realmente isso precisa ser feito na unidade onde o usuário quer destruir um arquivo, que pode ser um pendrive.



 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário