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 :

Affichage impossible dans ma richtextbox


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Par défaut Affichage impossible dans ma richtextbox
    Bonjour,

    je suis en traind de développé une application VB.net traitant d'un Serveur/client.

    Dans la programmation de mon serveur, je voudrais mettre en place un journal de connexions dans une richtextbox ...

    Le souci est quand je lance l'application pas à pas, je regarde la valeur de ma richtextbox, elle contient le texte passé en argument, mais lorsque je regarde ma richtextbox sur mon interface graphique, rien n'apparait...

    Voici le code mis en place :

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     Public Class Serveur
     
        Private Sub Serveur_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Dim ecoute As TcpListener = Nothing
            Dim ProcessEcoute As Thread = New Thread(New ThreadStart(AddressOf New Ecoute(ecoute).Run))
            ProcessEcoute.Start()
        End Sub
     
        Public Sub AfficheEtat(ByVal Trame As String)
            Etat.Rtf = "{\rtf1\ansi " & Trame & ".}"
        End Sub
     
    End Class
     
    Public Class Service
        Private liaisonClient As TcpClient
        Private nbClient As Integer
        Private [IN] As StreamReader 
        Private OUT As StreamWriter 
     
        Public Sub New(ByVal liaisonClient As TcpClient, ByVal nbClient As Integer)
            Me.liaisonClient = liaisonClient
            Me.nbClient = nbClient
        End Sub
     
     
        Public Sub Run()
     
            Try
     
                [IN] = New StreamReader(liaisonClient.GetStream())
                OUT = New StreamWriter(liaisonClient.GetStream())
                OUT.AutoFlush = True
                Dim demande As String = Nothing
                Dim reponse As String = Nothing
                demande = [IN].ReadLine
                While Not (demande Is Nothing)
                   ...
                    reponse = "[" + demande + "]"
                    OUT.WriteLine(reponse)
                    demande = [IN].ReadLine
                End While
     
                liaisonClient.Close()
            Catch e As Exception
                ...
            End Try
        End Sub
    End Class
     
    Public Class Ecoute
        Private ecoute As TcpListener
        Private nbClient As Integer = 0
        Private port As Integer = 10000
        Private Trame As String
     
        Public Sub New(ByVal ecoute As TcpListener)
            Me.ecoute = ecoute
        End Sub
     
        Public Sub Run()
            Try
                ecoute = New TcpListener(IPAddress.Parse("127.0.0.1"), port)
                ecoute.Start()
                Trame = "Démarrage du serveur (Ecoute en Cours)"
                Serveur.AfficheEtat(Trame)
                Dim liaisonClient As TcpClient = Nothing
                While True
                    liaisonClient = ecoute.AcceptTcpClient()
                    nbClient = nbClient + 1
                    Trame = "connexion du client : " & nbClient
                    Serveur.AfficheEtat(Trame)
                    Dim tache As Thread = New Thread(New ThreadStart(AddressOf New Service(liaisonClient, nbClient).Run))
                    tache.Start()
                End While
            Catch ex As Exception
                MsgBox("Une erreur est survenue sur la socket d'écoute : " + ex.Message, MsgBoxStyle.OkOnly, "Erreur")
            End Try
        End Sub
    End Class
    merci

  2. #2
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Par défaut
    Bonjour,
    Essaie en ajoutant l'instruction DoEvents après écriture dans ton RTB.
    DoEvents permet à l'interface graphique de réaliser les évènements propre à l'interface graphique qui sont en attente...
    Tiens nous au courrant,
    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Par défaut
    Merci pour l'attention portée à mon souci

    voila j'ai changé mon code que demandé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Sub AfficheEtat(ByVal Trame As String)
            Etat.Rtf = "{\rtf1\ansi " & Trame & ".}"
            Application.DoEvents()
        End Sub
    j'espère que c'est bien ce qui était demandé ...
    pour information, je n'ai toujours pas d'affichage après cette ligne de commande ...

    alors je me pose la question de savoir si le problème ne vient pas du multithread ... ou simplement du lancement d'un thread ... ???

  4. #4
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    Il faudrait essayer de gérer AfficheEtat sous forme d'évènement pour être sur que ton multithread n'est pas la cause du problème

Discussions similaires

  1. Affichage automatique dans une richTextBox
    Par FAIDp dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 31/10/2014, 09h06
  2. Réponses: 5
    Dernier message: 25/02/2011, 10h17
  3. Réponses: 25
    Dernier message: 27/03/2009, 18h10
  4. image dans un div, affichage impossible sous IE
    Par avogadro dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 15/01/2007, 12h15
  5. Réponses: 4
    Dernier message: 31/08/2006, 13h44

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