Pregunta

Tengo una prueba unitaria que funciona bien localmente, pero cuando se carga al servidor de compilación de TeamCity falla con "El proceso no puede acceder al archivo porque está siendo utilizado por otro proceso".

  1. Antes de hacer algo en la prueba Verifico en la configuración si el archivo existe y si es así intente eliminarlo. Esto falla con el mismo error mensaje como arriba
  2. Cuando escribe el archivo, cierro el escritor entonces disponer de lo que creo que debería deshacerse de cualquier recurso.

Entonces tengo un par de consultas

  1. ¿Alguien ha tenido problemas similares y ha logrado evitarlos?
  2. ¿Cómo puedo averiguar programáticall qué proceso ha bloqueado egoístamente el archivo !!!

Saludos

¿Fue útil?

Solución

Sysinternals FileMon tiene alguna información (desplácese hacia abajo) sobre cómo lograron esto en versiones anteriores de Windows.

Process monitor es su última versión, pero no lo hace ' No dé muchas pistas sobre cómo lo hacen. Sin embargo, hay algunos artículos de la base de conocimiento vinculados allí que deberían llevarlo a esta información.

-Adam

Otros consejos

Sysinternals handle.exe es el primer paso. O utilice Process Explorer ' Find Handle or DLL . Sin embargo, siempre es más seguro matar el proceso que cerrar el controlador.

Programáticamente, se trata de escribir un controlador de kernel que lea la tabla de identificadores de Windows.

ProcessMon (para encontrar) y Unlocker (al menos para desbloquear) también son útiles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top