Eu tenho alguns processos em servidores windows 2003 server (service packs mais recentes, etc) que exibem o mesmo problema: uma falha aleatória para excluir um arquivo que eles devem ser capazes de excluir. Isso acontece tanto no software que eu escrevi quanto nos arquivos em lote (executado no agendador de tarefas).
Por exemplo: Eu tenho um programa que abre um arquivo existente e cria um registro com o mesmo nome do arquivo, exceto por uma extensão diferente. Quando meu programa termina de processar o arquivo, ele é movido para um subdiretório chamado "concluído" e, em seguida, exclui o log. Às vezes, no entanto, minha exclusão falha. Não há nenhum scanner de vírus instalado na máquina que possa manter o arquivo aberto. Meu software é o único software que faz qualquer coisa com este arquivo - heck, ele criou o arquivo. E, no entanto, o arquivo não consegue excluir. Este software processa mais de 5000 arquivos por semana. Algumas semanas eu nunca receberei o erro, outras acontecerão uma ou duas vezes, aparentemente aleatoriamente. Não é uma coisa de acesso a direitos e estou perplexo. Não é um problema que eu possa replicar sob demanda; isso só acontece às vezes. Isso acontece em vários servidores e em arquivos em lote, bem como no meu software.
Alguém encontrou algo assim? Eu coloquei uma armadilha de erro na exclusão e parece estar recebendo um tipo de erro "Acesso negado" ao excluir.
--- ADDENDUM
Apenas outra nota: sim, tentei atrasar a exclusão depois de fechar o arquivo (veja o comentário abaixo). Além disso, um dos arquivos em lote que eu tenho faz isso:
if exist my_lockfile.txt goto exit_this_batch
echo here is a lock file > my_lockfile.txt
call someother_program
call more_programs
call there_is_always_a_delay_of_at_least_a_minute_here
del my_lockfile.txt
:exit_this_batch
Esse arquivo em lote acima de 1 em 10000 vezes não será excluído. O atraso entre a criação com eco e o del é sempre pelo menos um minuto. Estranho.