MÉTODO FILE, NÃO LIBERA O ARQUIVO COPIADO???

MARCOS 18/08/2022 09:13:28
#500322
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???

KERPLUNK 18/08/2022 11:47:14
#500323
Resposta escolhida
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();
}
}
MARCOS 19/08/2022 11:57:27
#500333
Obrigado, Kerplunk!
Tópico encerrado , respostas não são mais permitidas