RE:Como saber si archivo esta abierto
Hola, puedes dirigirte a la siguiente direccion :
http://www.elguille.info/colabora/puntoNET/HAG_MonitorDeArchivos.htm
Alli encontraras un articulo que habla sobre como monitorear archivos.
La descripcion del articulo dice lo sgte:
El siguiente código utiliza el espacio de nombres System.IO.SyistemWatcher para generar un evento si se producen cambios en los archivos contenidos en el directorio indicado, cuando se produce un cambio (como eliminar un archivo, renombrarlo, crear uno nuevo, o abrirlo), se dispara un evento.