Bonjour,
Mon problème est le suivant :
Appeller la fonction IsOpen pour vérifier si un fichier texte est ouvert ou utilisé, puis faire une boucle de test pour attendre que le fichier texte soit fermé avant de quitter la fonction.
Donc :
1/ Appeller la fonction IsOpen pour vérifier si un fichier texte est ouvert ou utilisé =>. Jusque la pas de problème il y a une dizaine de bons exemple sur le site. Comme:
https://www.developpez.net/forums/d1...d-utilisation/
https://stackoverflow.com/questions/...-the-text-file
2/ Il faut que cette fonction attende que le fichier soit fermé par une autre application (un thread sous CMD) => donc il faut réaliser une boucle de test avec tempo pour limiter l'usage inutile du processeur.
Je ne trouve rien comme exemple même chez les anglo-saxons.
Donc j'ai écrit la fonction si dessous qui attend bien mais ne sort pas de la boucle une fois le que le fichier texte est fermé ! Le programme se fige. Pour débloquer ctrl + alt +supp ....!!!Pourquoi ?
Je ne comprend pas ou est l'erreur dans cette boucle.
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
16
17
18
19
20
21
22
23
24
25
26 Public Function IsOpen(ByVal Filepath As String) As Task(Of Boolean) 'Test si un fichier est déjà ouvert Dim inputOk As Boolean = False Dim sFichier As String = DISK "\abc.txt" Do Until inputOk = True 'tempo Thread.Sleep(50) Try Dim FS As FileStream = File.Open(sFichier, FileMode.Open, FileAccess.Read, FileShare.None) ' Ouverture Ok. Si déjà ouvert : referme FS.Close() FS.Dispose() FS = Nothing 'tempo Thread.Sleep(50) Catch ex As IO.IOException If TypeOf ex Is IOException Then inputOk = False Else inputOk = True End Try Loop End Function
S'agit-il d'une impossibilité de mettre un IF après un catch ex ?
Autre idée faut-il faire que la fonction test comme en 1/ puis revenir au programme appelant, tester le retour de ex, si ex true relancer la fonction ?
Si vous avez une idée je vous remercie d'avance pour votre aide.
a+
Partager