MÉTODO FILE, NÃO LIBERA O ARQUIVO COPIADO???
Bom dia!
Aplicativo VB.NET(Desktop)
Estou com um problema "aparentemente" simples de resolver.(Mas, não consegui)
1.) Num dado momento do meu código, preciso transferir um arquivo de uma pasta para outra
Utilizo o : File.Copy(Origem, destino).
Funciona perfeito!
2.) Mas logo em seguida , numa outra tela que tenho no mesmo aplicativo, eu tento ler este arquivo que foi transferido, e a mensagem que
recebo de erro é que "O arquivo esta sendo usado por outro processo".
Obs: Se eu fechar meu aplicativo inteiro e entrar de novo, ao tentar ler o arquivo copiado, percebo que le normalmente. (Mas, tenho que fechar o aplicativo e tornar a entrar)
a.) Não encontrei no objeto "file" nenhum método que libere o objeto depois que é utilizado.
Algum colega, sugere uma solução para isto???
Aplicativo VB.NET(Desktop)
Estou com um problema "aparentemente" simples de resolver.(Mas, não consegui)
1.) Num dado momento do meu código, preciso transferir um arquivo de uma pasta para outra
Utilizo o : File.Copy(Origem, destino).
Funciona perfeito!
2.) Mas logo em seguida , numa outra tela que tenho no mesmo aplicativo, eu tento ler este arquivo que foi transferido, e a mensagem que
recebo de erro é que "O arquivo esta sendo usado por outro processo".
Obs: Se eu fechar meu aplicativo inteiro e entrar de novo, ao tentar ler o arquivo copiado, percebo que le normalmente. (Mas, tenho que fechar o aplicativo e tornar a entrar)
a.) Não encontrei no objeto "file" nenhum método que libere o objeto depois que é utilizado.
Algum colega, sugere uma solução para isto???
Eu tive problemas com isso por causa do IIS e GC. Daào que funcionou pra mim foi copiar por stream:
public void copy(String oldPath, String newPath)
{
FileStream input = null;
FileStream output = null;
try
{
input = new FileStream(oldPath, FileMode.Open);
output = new FileStream(newPath, FileMode.Create, FileAccess.ReadWrite);
byte[] buffer = new byte[32768];
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, read);
}
}
catch (Exception e)
{
}
finally
{
input.Close();
input.Dispose();
output.Close();
output.Dispose();
}
}
Obrigado, Kerplunk!
Tópico encerrado , respostas não são mais permitidas