Bonjour,
Je cherche un moyen de savoir si un fichier est utilisé par une autre application sans bloquer ce fichier à mon tour.
Actuellement, j'utilise la méthode suivante :
Le principe de cette méthode est qu'elle bloque le fichier un court instant: si ça passe, le fichier était non bloqué (donc libre) sinon, il était utilisé par une autre application.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public static bool IsFileUsed(FileInfo fileInfo) { try { using (FileStream fs = new FileStream(fileInfo.FullName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) { } return false; } catch (IOException ex) // S'il est bloqué, on arrive ici { return true; } }
Le problème est que, durant un court instant, cette méthode bloque elle aussi le fichier. Si l'autre application essaye d'accéder au fichier à ce même moment, l'accès lui est refusé.
Dans l'idéal, je cherche un moyen d'aller interroger l'état de ce fichier, mais sans avoir besoin de le bloquer moi-même.
Vous avez une idée ou une solution à proposer ?
Merci d'avance.
Partager