2010-08-19 312 views
12

Encontré una pregunta similar here pero se cerró/aceptó con una respuesta de "no hacer eso".Forzar cerrado un archivo abierto por C#

Estoy en una situación en la que no me importa lo que suceda con las otras aplicaciones, quiero tomar un archivo que pueda ser bloqueado por otros (groseramente si es necesario) y salirse con la mía. Es posible que necesite mover, cambiar el nombre o eliminar este archivo.

Básicamente necesito procesar archivos en un directorio creado por una aplicación que no limpia sus bloqueos. Sé que la aplicación está procesando cuando llama, pero necesito matar los bloqueos cuando corro. Además, parece que estoy en conflicto con las lecturas del software AV local que escanea el recurso compartido remoto donde está el servidor.

Todo esto se suma a una situación de "cierre forzado" irresoluble, así que puedo hacer lo que necesito. ¿Alguien tiene una idea sobre qué hacer?

Respuesta

2

Este es probablemente irrelevante y, si es así, por favor, que alguien comente, pero hubo una solución alternativa que he usado antes en el explorador para evitar los bloqueos de archivos.
Si un archivo se bloqueó debido a un proceso que se había apagado Windows a menudo no le permitía eliminarlo, pero si creaba un archivo nuevo del mismo nombre en otro lugar, lo movía a la carpeta que tendría éxito. A continuación, podría eliminar el nuevo archivo y todo estaba bien.
Para usar esto para su aplicación, debería poder leer el archivo y mantenerlo en la memoria antes de hacerlo, y luego volver a escribirlo después de deshacerse del anterior.
Quizás ayude, tal vez no, pero vale la pena intentarlo.

0
foreach (var process in Process.GetProcessesByName("excel")) //whatever you need to close 
    { 
     if (process.MainWindowTitle.Contains("test.xlsx")) 
     { 
      process.Kill(); 
      break; 
     } 
    } 

o

foreach (var process in Process.GetProcesses()) 
    { 
     if (process.MainWindowTitle.Contains("test.dat")) 
     { 
      process.Kill(); 
      break; 
     } 
    } 
Cuestiones relacionadas