VB.NET : disponibilité Readonly d'un fichier

Sympa74 Messages postés 85 Date d'inscription lundi 25 septembre 2006 Statut Membre Dernière intervention 18 décembre 2008 - 1 mars 2008 à 11:44
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 1 mars 2008 à 15:44
Bonjour à tous,

Bien évidemment, j'ai déjà cherché sur le forum, mais je n'ai pas vraiment trouvé ce que je cherche, donc voici mon problème.

J'ai un fichier qui va être utilisé par 2 ordis (reliés en réseau).

Lorsque l'ordi 1 lance une procédure faisant appel à ce fichier, il doit vérifier au préalable que le fichier n'est pas utilisé par l'autre ordi.

J'ai donc pensé à faire cela :

        Dim fi As FileInfo
        fi = New FileInfo(fichierAtraiter)

        While fi.Attributes = 1
            ' tant que le fichier est utilisé par une autre procédure...
            '   (en fait un autre ordi connecté sur le meme fichier)
            TextBox1.Text = "Le fichier est en cours d'utilisation"
        End While

        ' dès que le fichier est libéré... la procédure peut se poursuivre
        TextBox1.Text = "Le fichier est à présent disponible"

mais à priori, cela ne fonctionne pas du tout... qu'elle que soit la condition du fichier (true ou false), aucun des 2 messages ne s'affiche... je pense que c'est un problème lié à cette boucle car si je fais le test manuellement, (via un bouton par exemple, comme ci-après), cela fonctionne très bien...

 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim fi As FileInfo
        fi = New FileInfo(fichierAtraiter)

        If fi.Attributes = 128 Then
            TextBox1.Text = "Le fichier est disponible"
        End If

        If fi.Attributes = 1 Then
            TextBox1.Text = "Le fichier est en cours d'utilisation"
        End If

    End Sub

Si une "âme charitable" voulait bien me donner un tuyau (non percé de préférence) alors, je vous en remercie par avance.

Bien à vous,

Philippe - Sympa 74
 

3 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 mars 2008 à 12:04
salut,
en remplaçant TextBox1.Text = par debug.print , çà donne quelquechose? (simple pb d'affichage...)

dans quel évènement utilises-tu ton code?
++
<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Sympa74 Messages postés 85 Date d'inscription lundi 25 septembre 2006 Statut Membre Dernière intervention 18 décembre 2008 1
1 mars 2008 à 15:21
hello,
remplacer TextBox1.Text = par debug.print, ne change absolument rien au problème.

Cette procédure est utilisée dans le cadre de l'écriture dans un fichier...

J'enregistre des infos dans un fichier .txt, enregistrement déclenché par un click sur bouton, mais avant d'ouvrir le fichier et y écrire des infos... il faut vérifier que l'autre ordi n'est pas lui-même entrain d'écrire quelque chose dans le même fichier.

voila pour la précision... merci pour l'aide des pros qui parcourent régulièrement ce forum...

Philippe - Sympa 74
 
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 mars 2008 à 15:44
ton problème est bien énoncé, je demandais le remplacement au cas où çà serait un problème d'affichage de la TB puisque le code est le même, mis à part juste une boucle.... (dans laquelle d'ailleurs tu devrais ajouter application.doevents pour ne pas crasher ton appli)

peux-tu essayer avec un timer (genre tous les 500ms), pour relever chaque retour de fi.Attributes
(au càs où çà ne serait ni 1 ni 128...)

ps : je ne fais pas de dotnet
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Rejoignez-nous