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 :

Probleme avec un thread


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2014
    Messages : 27
    Points : 25
    Points
    25
    Par défaut Probleme avec un thread
    Bonsoir à tous

    voila mon code
    Code VB.NET : 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
    Public Class Form1
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Dim moi As New Thread(AddressOf Lui)
            moi.Start()
            Me.Invoke(New dLui(AddressOf Lui))
        End Sub
        Delegate Sub dLui()
        Sub Lui()
     
            Button2.Text = "cool ici c est un thread"
            ListBox1.Items.Add("avec le thread")
     
        End Sub
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Button1.Text = "ok"
            ListBox1.Items.Add("sans le thread")
        End Sub
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
        End Sub
    End Class

    le thread doit modifier le button1 ( ca , ca le fait)et
    le listbox1, et pourquoi ca le fait pas ?

    Merci de votre aide

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Mars 2011
    Messages : 104
    Points : 151
    Points
    151
    Par défaut
    Comprend pas ta démarche.
    Depuis ton thread tu essais d'accéder directement à l'interface.
    C'est dans le thread qu'il faut appeler le délégué.
    un truc du genre :

    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
    Imports System.Threading
    Public Class Form1
        Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
            Dim moi As New Thread(AddressOf Lui)
            moi.Start()
        End Sub
        Delegate Sub decrit()
        Sub Lui()
            Me.Invoke(New decrit(AddressOf ecrit))
        End Sub
        Private Sub ecrit()
            Button2.Text = "cool ici c est via un thread"
            ListBox1.Items.Add("avec le thread")
        End Sub
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
            Button1.Text = "ok"
            ListBox1.Items.Add("sans le thread")
        End Sub
     
    End Class

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2014
    Messages : 27
    Points : 25
    Points
    25
    Par défaut
    bonsoir

    Merci pour ta reponse,
    si je comprend bien, il faut un sub de plus que tu appelle depuis le thread
    c est ca ?

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Mars 2011
    Messages : 104
    Points : 151
    Points
    151
    Par défaut
    re,

    Je suis loin d'être un spécialiste des threads, mais je sais que pour modifier l'interface, la routine "toto()" qui le fait doit se trouver dans le thread de l'interface.
    Si tu veux modifier l'interface depuis ton thread et en utilisant la routine toto(), tu dois appeler cette routine via un délégué et non directement.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2014
    Messages : 27
    Points : 25
    Points
    25
    Par défaut
    rebonsoir
    je regarde ca cet apres midi
    je file au lit :p

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    chomeur
    Inscrit en
    Février 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Février 2014
    Messages : 27
    Points : 25
    Points
    25
    Par défaut
    bonsoir
    donc je recapitule
    j ai plein de données a recupérer par le socket

    j utilise une fonction

    DONNEESOCK.entete
    DONNEESOCK.pseudo
    DONNEESOCK.type

    bon y ne a une vingtaine

    ensuite j analise l entete
    en fonction de lentete, je veux

    faire un thread pour le chat qui renvoie direct le message aux clients

    faire un thread pour la position du joueur qui va ecrire en base de donnée et apres envoie les infos aux clients
    faire un trread pour la position des pnj et mobs qui va ecrire en BDD et apres envoie les infos aux clients

    faire un tread pour les action perso du joueur qui n'implique que lui (exemple objet de quete ramasser et autres) et le renvoie qu au joueur

    c est a dire si j ai bien tout compris



    je fais un thread lecture qui link l ecriture en direct a tous
    le meme thread lecture mais il link la BDD pui ecrit a tous
    le meme thread lecture qui link la BDD, mais ecrit a 1 joueur

    et c est un peux pret tout, non ?

Discussions similaires

  1. join et invoke dans les thread ne s'entendent pas
    Par andromeda dans le forum C#
    Réponses: 2
    Dernier message: 03/03/2009, 01h39
  2. Réponses: 3
    Dernier message: 12/01/2009, 18h50
  3. Réponses: 2
    Dernier message: 04/12/2008, 18h41
  4. Thread qui se met pas en pause
    Par Balbuzard dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 17/08/2008, 00h34
  5. [Thread] PB Thread.sleep(1000) marche pas
    Par kliel dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 03/12/2004, 14h47

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