IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Difficulté avec création / supression d'un fichier simulant un jeton


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club Avatar de Marroux
    Homme Profil pro
    Animateur d'équipe
    Inscrit en
    Novembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Animateur d'équipe
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 6
    Par défaut Difficulté avec création / supression d'un fichier simulant un jeton
    Bonjour,

    Je tente d'écrire une application de chat rustique pour mon boulot.

    J'utilise Visual basic 2010 express.

    L'application est multi instance (sinon ça sert à rien). Quand un utilisateur envoi un post il s'ajoute simplement à un fichier texte chat.txt.
    Les différentes instances de l'application rafraichissent leurs affichages toutes les 5 secondes.

    Comme la lecture/écriture se fait dans un seul fichier (situé sur un serveur), j'ai voulu sécuriser en mettant en place un système de jeton artisanal.
    Lorsqu'une instance veut écrire, elle attend (pendant pas plus de 6 secondes) la présence d'un fichier jeton.txt sur le serveur.
    S'il est présent, l'instance le supprime, réalise son écriture puis le recrée. C'est rustique, je le concède.

    Mon code fonctionne pour la première écriture mais pour les autres. J'ai une erreur lors de la tentative de destruction du fichier "Le processus ne peut pas accéder au fichier car il est en cours d'utilisation par un autre processus". Le test est fait en mono instance.

    Je dois mal m'y prendre avec la suppression/re-création du fichier Jeton.txt.

    Pourriez-vous m'aider svp ? Je suis en plein désespoir !

    Ci dessous un code de test qui reproduit parfaitement l'erreur.


    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    Imports System.IO
     
    Public Class Form1
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            StrNomFichier = "E:\Visual Basic\Projet\Test\Test_Fichier\Chat.txt"  'variable globale
            strNomJeton = "E:\Visual Basic\Projet\Test\Test_Fichier\Jeton.txt"	'variable globale
     
        End Sub
     
        Private Sub Btn_AddPost_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_AddPost.Click
     
            Dim strPost As String
     
            strPost = "y voilà : " & TimeOfDay
     
            If AttrapeJeton() Then
                My.Computer.FileSystem.WriteAllText(StrNomFichier, strPost & vbCrLf, True)
                File.Create(strNomJeton)
            End If
     
        End Sub
     
        Private Function AttrapeJeton() As Boolean
     
            Dim Count As Integer
            Dim Laps As Integer
     
            Count = 0
            Laps = 300
     
            While (Not File.Exists(strNomJeton))
                Count += 1
                Threading.Thread.Sleep(Laps)
     
                If Count > 20 Then
                    'Attente trop longue
                    MsgBox("Erreur AttrapeJeton() : Attente trop longue pour le jeton demandé.")
                    Return False
                End If
     
            End While
     
            'Si on arrive ici c'est  que le fichier strNomJeton existe
            Try
                File.Delete(strNomJeton)
            Catch ex As Exception
                MsgBox("Erreur AttrapeJeton() : le jeton demandéa disparu" & ex.Message)
                Return False
            End Try
     
            Return True
     
        End Function
     
        Private Sub Btn_Quitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Quitter.Click
            End
        End Sub
     
     
    End Class

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 196
    Par défaut
    c'est une mauvaise idée sur bien des aspects
    il faut une autre appli sur le serveur avec laquelle communiquer en tcp/ip ou une base de données réseau (plus simple)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre du Club Avatar de Marroux
    Homme Profil pro
    Animateur d'équipe
    Inscrit en
    Novembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Animateur d'équipe
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 6
    Par défaut
    J'ai bien conscience qu'il s'agit d'un bidouillage rustique. C'est une application à usage restreint (un dizaine de personnes en simultanée tout au plus) .....et pas vraiment officielle.

    J'ai fait une première version avec autoit qui fonctionne de manière satisfaisante. C'est le passage à VB qui me cause souci. J'ai l'impression que le fichier chat.txt reste ouvert contrairement à ce que j'attendais.

    Je ne comprend pas dans le code ci-dessus ce qui provoque l'erreur au deuxième appel de la fonction AttrapeJeton().

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/10/2012, 10h28
  2. [Templates] Difficultés avec moteur de templates et fichiers CSS
    Par CompuTux dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 03/10/2011, 21h35
  3. Création automatique d'un fichier avec VBA
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/10/2008, 08h00
  4. Probleme casse fichier texte avec création table SAS
    Par pierre24 dans le forum SAS Base
    Réponses: 4
    Dernier message: 16/05/2008, 10h52
  5. création objet avec l ouverture d un fichier excel
    Par levac dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 30/07/2007, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo