Puede probar el código provisto en this question over here, o mirar other suggestions here.
El enfoque general consiste en enumerar los mangos de todos los procesos, obtener las rutas de los archivos de las manijas, y compara con el archivo que le interesa.
Sin embargo, un problema con este enfoque es que incluso si puede determinar que el archivo está bloqueado y la aplicación que tiene el bloqueo de archivo, entonces todavía tendrá que hacer frente a las condiciones de carrera, por ejemplo ...
un milisegundo más tarde
- el archivo no está bloqueado
- la aplicación que no mantenga el bloqueo no es ahora
luego dos milisegundos más tarde
- el archivo está bloqueado (de nuevo)
- una aplicación diferente tiene el bloqueo
entonces tres milisegundos más tarde
- el archivo sigue bloqueada
- otra aplicación tiene la cerradura
... etc
One suggestion es intentar obtener el identificador de archivo en su aplicación, y detectar la excepción cuando se puede' t.
try
{
using (Stream stream = new FileStream("MyFilename.txt"))
{
}
} catch {
//check here why it failed and ask user to retry if the file is in use.
}
Por supuesto, esto no va a ayudar a identificar al culpable (s), pero al menos tienes una manera más segura de intentar acceder al archivo.
Duplicado: http://stackoverflow.com/questions/317071/how-do-i-find-out-which-process-is-locking-a-file-using-net –
¿Pueden las respuestas aquí fusionarse de alguna manera? con la pregunta duplicada? –
No elimine esta pregunta. La otra pregunta puede ser ontológicamente equivalente, pero no coincide con mi búsqueda. Esta pregunta tiene mérito porque admite una ruta de acceso diferente. –