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

Windows Forms Discussion :

[VB.NET][VS2003] Threads et IHM


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut [VB.NET][VS2003] Threads et IHM
    Bonjour,
    d'un logiciel que j'ai développé je dois faire quelques modifications et je ne sais pas par où partir, voici ce que je dois faire :
    tout en étant opérationnel (plusieurs onglets) le logiciel doit en permanance scanner la présence d'adresses IP à portée de wifi, pour ce faire il parcourt un treeview et lance des pings par rapport au sous noeud qui renseigne cette.
    Si une adresse est présente il doit mettre à jour l'ihm puis transmettre via ftp une série de fichiers en arrêtant le scan d'ip et en le reprenant à la fin du transfert.
    Le transfert doit être visible (2 ProgressBar et 3 TextBox).
    Comment je dois organiser ça ?
    Il faut que j'utilise un delegate (ça me fait un peu peur) au sein d'un timer qui déclenche un autre thread de transfert ?
    Je ne vois pas trop bien par où lancer les hostilités.
    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Re bonjour
    Bon apparament il faut que je me tourne vers les delegates...
    j'ai creusé l'article de DrQ et celui du Dr Plasserre et j'ai tenté ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Hors de la classe
    Delegate Sub delegateAffDlg(ByVal iPBar As Integer, ByVal sTxt As String)
    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
    'Déclaration
    Private delegateAff As New delegateAffDlg(AddressOf UpdateAffichage)
     
    'Sub D'affichage
    Sub UpdateAffichage(ByVal iPBar As Integer, ByVal sTxt As String)
        Try
            With ProgressBar1
                If .Value + iPBar < .Maximum Then
                    .Value += iPBar
                Else
                    .Value = 0
                End If
                TextBox1.Text = sTxt
            End With
        Catch
        End Try
    End Sub
     
    'Timer (1000ms)
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        For i As Integer = 0 To 10
            BeginInvoke(delegateAff, New Object() {5, "Essai : " & i.ToString})
        Next
    End Sub
    Donc en gros j'ai voulu essayer de raffraichir un TextBox et une ProgressBar depuis un delegate appelé par un timer.
    Mon souci est que dans le texte affiché est uniquement : "Essai : 10".
    Quelqu'un pourrait-il m'aiguiller un peu ?
    Merci d'avance.

    Edit : Quelle est la différence entre "as string" et "as [string]" (dans une déclaration de fonction) ?

  3. #3
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Par défaut
    Et si tu mets un timer de 5 secondes?

  4. #4
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Citation Envoyé par abelman
    Et si tu mets un timer de 5 secondes?
    Bon je retourn au café...
    j'ai mis un timer de 5 seconde et un for/next à 10000 et là je vois bien ma ProgressBar s'affoler mais le compteur va directement à 10000, surement trop rapide !

  5. #5
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private iteration as integer = 0
    'Timer (1000ms)
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        if iteration = 100 then return
        iteration = iteration + 1
        BeginInvoke(delegateAff, New Object() {iteration, "Essai : " & iteration.ToString})
     
    End Sub
    Et avec ça?

  6. #6
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Ok là à chaque tick ça incrémente de 1 mais je n'ai pas tout saisi.
    Si le traitement dans le timer est long est-ce qu'il se fait sur un autre thread avec ceci ou alors il faut passer par Begin/End invoke ?
    Désolé mais je nage un peu dans ces Delegate...

Discussions similaires

  1. [Outils][VB.Net/VS2003] Où trouver des MSChart ?
    Par Kanie dans le forum EDI/Outils
    Réponses: 10
    Dernier message: 27/05/2008, 14h07
  2. [VB.NET] VS2003 Objet calendrier
    Par cosmos38240 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/03/2006, 09h40
  3. [VB.NET][VS2003] mise à jour et .exe
    Par HULK dans le forum Windows Forms
    Réponses: 9
    Dernier message: 25/01/2006, 14h44
  4. [vb.net] [System.Threading] Etats d'un Thread
    Par arnolem dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/01/2006, 16h41
  5. [VB.NET] [VS2003] Ecrire dans un jpg
    Par toniolol dans le forum Windows Forms
    Réponses: 9
    Dernier message: 15/12/2005, 13h53

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