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 :

Comportement étrange avec l'utilisation de Datagridview.Rows.clear() [Débutant]


Sujet :

VB.NET

  1. #21
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    étonnant chez moi ca fonctionne bien
    j'utilise .net 3.5 est ce important?

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    non, la classe ping date du fx 1 ou 2
    et j'ai utilisé le 3.5 pour mes tests aussi
    peut etre le routeur qui fait des farces, tu es sur une livebox ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #23
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    non, la classe ping date du fx 1 ou 2
    et j'ai utilisé le 3.5 pour mes tests aussi
    peut etre le routeur qui fait des farces, tu es sur une livebox ?
    Non sur le reseau interne de ma boite ...

    Edit : je suis pas vraiemenbt convaincu par les methodes asnyc. J'en utilise aussi une d'ailleur une autre : Dns.BeginGetHostEntry(obj, callBack, obj)

    Certes ca ne bloque pas l'application mais j'ai l'impression que ca me la fait planter. En tout cas je pense que je ne sais rien gerer du tout .

    Pour que je puisse voir correctement le programme s'executer je suis obliger de mettre un point d 'arret sur toutes les lignes sinon il passe pas la ou je veux. Le programme peu s'arreter sur un Else ou un End Sub... Est-ce que le fait que dans certains car pour recuperer la valeur d'une variable dans une methode async l'utilisation d'un RaiseEvent(ma variable) peut etre la cause de tous mes maux ?

  4. #24
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 14
    Points
    14
    Par défaut
    Apres plusieurs reglages et test il semble que ceci foncitonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i As Integer = 0 To (machines.Count - 1)
     
                Dim p As New System.Net.NetworkInformation.Ping
                AddHandler p.PingCompleted, AddressOf ping_end
                p.SendAsync(machines(i), 102, machines(i))
     
                Thread.Sleep(10000)
            Next
    Avec un long sleep je parviens a recuperer exacetement ce que je veux.
    Il n'y a t il pas moyent de faire autrement ? Si j'ai 40 hostnames a controler je vais pas faire une pause de 10sec entre chaque ping, si ?

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    as tu moyens d'installer une appli sur ces postes ? si oui tu peux installer un service qui s'occupera de répondre à un truc mieux qu'un ping
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    j'ai fait un test de 1 à 254 sans délai, j'ai tout recu
    par contre il y a quelques unes que qui ont levé 2x l'"event", donc avec un dictionnaire ca ne convient pas (clé unique)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #27
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    j'ai fait un test de 1 à 254 sans délai, j'ai tout recu
    par contre il y a quelques unes que qui ont levé 2x l'"event", donc avec un dictionnaire ca ne convient pas (clé unique)
    He ben ... moi sans delais, avec seulement deux hostname je recupere rien dans mon dictionnaire....

    Citation Envoyé par Pol63
    as tu moyens d'installer une appli sur ces postes ? si oui tu peux installer un service qui s'occupera de répondre à un truc mieux qu'un ping
    Helas non je fais ca pour l'instant sur un reseau local qui n'est pas un reseau de test et dans ma salle de test c'est different je n'ai pas autant de machine a pinger...

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    tu peux tenter l'approche moins évasive avec un thread par ping, et l'appel du ping synchrone, tu auras moins de chance de perdre des trucs (avec une sub de thread avec un paramètre as object, à convertir en string, et un try catch dedans)
    éventuellement délayer avec un sleep (2) entre chaque démarrage de thread
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #29
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    tu peux tenter l'approche moins évasive avec un thread par ping, et l'appel du ping synchrone, tu auras moins de chance de perdre des trucs (avec une sub de thread avec un paramètre as object, à convertir en string, et un try catch dedans)
    éventuellement délayer avec un sleep (2) entre chaque démarrage de thread
    J'ai suivit ton conseil et ca marche.

    J'ai fait une classe dite thread_ping pour gerer le ping.sync dans laquelle je demarre un thread dans le constructeur qui appele cette fonction :

    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
     Private Sub ping(ByVal obj As Object)
     
            Dim ip As New String(obj)
            Try
     
                Dim p As New System.Net.NetworkInformation.Ping
                Dim ping_reply = p.Send(ip, 102)
     
                If ping_reply.Status = NetworkInformation.IPStatus.Success Then
     
                    hostip = ip
                    etat = true
                Else
                    hostip = ip
                    etat = false
                End If
     
            Catch ex As NetworkInformation.PingException
     
                 hostip = ip
                 etat = false
     
            End Try
     
        End Sub
    Ensuite dans ma classe principale je fais :

    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
    Private Function listMachine(ByVal ipOuHostname As List(Of String)) As List(Of machine)
     
            Dim lmachine As New List(Of host)
            Dim machine As machine
     
            start_time = Now
     
            For Each ip In ipOuHosname
     
                dim p = New thPing(ip)
     
                machine = New machine()
     
                If p.isOnline Then
     
                     ' je recupere l'ip et le hostname
                     ' du thread hostnameEntry
     
                     dim he = new thread_he(ip)
                     machine.hostname = he.hostname 
                     machine.ip = he.ip
     
                Else
     
                    machine.etat = p.isOnline
     
                    if isIPv4(ip) then
                             machine.ip = p.ip
                    else
                             machine.hostname =  p.ip
                    endif
     
                End If
     
                lmachine.Add(host)
     
     
            Next
     
            stop_time = Now
            elapsed_time = stop_time.Subtract(start_time)
     
            Console.WriteLine(elapsed_time.TotalSeconds.ToString("0.000000"))
            Return rlhost
    End Function
    Dans les deux classe thread : threadPing et le thread_hostEntry je ne fais pas de Thread.Sleep(2)

    Comme tu peux le voir je mesure egalement le temps d'execution de la fonction.

    Temps d'execution :

    • Avec 7 ips : 16,036828
    • Avec 100 ips : 55,177297


    Il y a-t-il moyen de reduire ce delais ?

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    moi je disais un thread par ping à faire, ce qui devrait garder le temps d'exécution assez proche d'un seul ping
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #31
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    moi je disais un thread par ping à faire, ce qui devrait garder le temps d'exécution assez proche d'un seul ping
    je n'ai pas bien compris.
    Vu que dans ma classe thPing je creer un seul thread, et que dans ma boucle je l'initialise avec une seule ip, n'ai je pas un thread par ping ?

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par iOops Voir le message
    je n'ai pas bien compris.
    Vu que dans ma classe thPing je creer un seul thread, et que dans ma boucle je l'initialise avec une seule ip, n'ai je pas un thread par ping ?
    je sais pas on a pas tout le code et il y a du code inutile à la compréhension
    mon chef à l'habitude de dire de faire un bout de code simple qui fonctionne avant de l'intégrer dans le reste du modèle

    en l'occurrence je viens de tester ca :

    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
        Private Sub Form1_Click(sender As Object, e As System.EventArgs) Handles Me.Click
            For i As Integer = 1 To 254
                Dim th As New Threading.Thread(AddressOf ping)
                th.Start("192.168.0." & i.ToString)
            Next
            Me.Text = "all started"
        End Sub
     
        Private Sub ping(s As String)
            Try
                Dim p As New Net.NetworkInformation.Ping
                Dim r = p.Send(s, 150)
                Me.Invoke(New Action(Sub() append(r.Status.ToString & " " & s)))
            Catch ex As Exception
                Me.Invoke(New Action(Sub() append("err " & s)))
            End Try
        End Sub
     
        Private Sub append(s As String)
            Me.ListBox1.Items.Add(s)
        End Sub
    et en moins d'une seconde j'ai pingé toute ma plage
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  13. #33
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    je sais pas on a pas tout le code et il y a du code inutile à la compréhension
    mon chef à l'habitude de dire de faire un bout de code simple qui fonctionne avant de l'intégrer dans le reste du modèle

    en l'occurrence je viens de tester ca :

    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
        Private Sub Form1_Click(sender As Object, e As System.EventArgs) Handles Me.Click
            For i As Integer = 1 To 254
                Dim th As New Threading.Thread(AddressOf ping)
                th.Start("192.168.0." & i.ToString)
            Next
            Me.Text = "all started"
        End Sub
     
        Private Sub ping(s As String)
            Try
                Dim p As New Net.NetworkInformation.Ping
                Dim r = p.Send(s, 150)
                Me.Invoke(New Action(Sub() append(r.Status.ToString & " " & s)))
            Catch ex As Exception
                Me.Invoke(New Action(Sub() append("err " & s)))
            End Try
        End Sub
     
        Private Sub append(s As String)
            Me.ListBox1.Items.Add(s)
        End Sub
    et en moins d'une seconde j'ai pingé toute ma plage
    Quel code est inutile a la comprehension ?

    Chez moi ta fonction marche aussi. Est-ce que tu pense que je peux recuperer les ip dans une varialbe dont le ping a eu un timeout ou ce n'est pas possible? Ou alors je me contente des ip qui on pu etre pinger et refaire une verif dans ma liste complete en comparant avec le resultat?

    Edit : je pense que j'ai le defaut de trop compliquer dans ma facon de penser le algos... J'arrive a avoir ce que je veux avec un ping entre 1sec et moins d 'une seconde. J'ai definit un status de machine par defaut a non joignable avant le ping et lors du ping si ca marche je met le status a joignable sinon je fais rien.

    A noter aussi que le fait d'avoir mis apres le Thread.start un Thread.join() me ralenti considerablement l'execution car il attend que chaque thread se termine.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par iOops Voir le message
    Quel code est inutile a la comprehension ?
    je sais pas j'avais envie de dire ca ^^

    Citation Envoyé par iOops Voir le message
    Chez moi ta fonction marche aussi. Est-ce que tu pense que je peux recuperer les ip dans une varialbe dont le ping a eu un timeout ou ce n'est pas possible? Ou alors je me contente des ip qui on pu etre pinger et refaire une verif dans ma liste complete en comparant avec le resultat?
    tout est possible
    tu peux faire un thread global qui lance les threads et fait un .join dessus, comme ca tu sais quand tout est fini, tu peux donc voir une collection dont tu es sur que l'état est mis à jour pour toutes les ip
    sinon tu peux aussi avec un status "en cours" et faire un timer qui met à jour l'interface en fonction de la collection
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  15. #35
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    je sais pas j'avais envie de dire ca ^^


    tout est possible
    tu peux faire un thread global qui lance les threads et fait un .join dessus, comme ca tu sais quand tout est fini, tu peux donc voir une collection dont tu es sur que l'état est mis à jour pour toutes les ip
    sinon tu peux aussi avec un status "en cours" et faire un timer qui met à jour l'interface en fonction de la collection
    Ca me semble bien complique (je suis debutant encore ...)

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    si tu galères je peux adapter mon code multithreadé sans aync pour y ajouter les .join et le remplissage d'une collection
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  17. #37
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    si tu galères je peux adapter mon code multithreadé sans aync pour y ajouter les .join et le remplissage d'une collection
    je veux bien chercher voir si j'y arrive.

    Donc si j'ai bien compris, il faudrait que je creer un thread principal qui englobe mon thread de ping et celui qui me recupere le hostentry ?

    Schematisation:

    Main Thread

    --> Appel du Ping Thread

    Si ping ok :

    ---> Appel du thread get.hostentry

    mainThread.join()

    je me demande si un thread pour recuperer l'ip associee au hostname et vise versa est-il bien utile .... J#ai fais ca en pensant que je pourrais utiliser independament le ping et le hosstentry mais en fait les deux sont souvent associes.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    quelques secondes :
    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
     
      Private Sub Form1_Click(sender As Object, e As System.EventArgs) Handles Me.Click
            Dim th As New System.Threading.Thread(AddressOf MainThreadPingHostName)
            th.Start()
        End Sub
     
        Private Sub MainThreadPingHostName()
            Dim threads As New List(Of Threading.Thread)
            For i As Integer = 1 To 254
                Dim th As New Threading.Thread(AddressOf ping)
                th.Start("192.168.0." & i.ToString)
                threads.Add(th)
            Next
            For Each th In threads
                th.Join()
            Next
     
            Me.Invoke(New Action(Sub()
                                     For Each s As String In collection
                                         Me.ListBox1.Items.Add(s)
                                     Next
                                 End Sub))
     
        End Sub
     
        Dim collection As New List(Of String)
     
     
        Private Sub ping(s As String)
            Try
                Dim p As New Net.NetworkInformation.Ping
                Dim r = p.Send(s, 150)
                If r.Status = Net.NetworkInformation.IPStatus.Success Then
                    collection.Add(r.Status.ToString & " " & s & " " & System.Net.Dns.GetHostEntry(s).HostName)
                Else
                    collection.Add(r.Status.ToString & " " & s)
                End If
            Catch ex As Exception
                collection.Add("err " & s)
            End Try
        End Sub
     
        Private _verrou As New Object
        Private Sub AddToCollectionThreadSafe(s As String)
            SyncLock _verrou
                collection.Add(s)
            End SyncLock
        End Sub
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  19. #39
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    quelques secondes :
    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
     
      Private Sub Form1_Click(sender As Object, e As System.EventArgs) Handles Me.Click
            Dim th As New System.Threading.Thread(AddressOf MainThreadPingHostName)
            th.Start()
        End Sub
     
        Private Sub MainThreadPingHostName()
            Dim threads As New List(Of Threading.Thread)
            For i As Integer = 1 To 254
                Dim th As New Threading.Thread(AddressOf ping)
                th.Start("192.168.0." & i.ToString)
                threads.Add(th)
            Next
            For Each th In threads
                th.Join()
            Next
     
            Me.Invoke(New Action(Sub()
                                     For Each s As String In collection
                                         Me.ListBox1.Items.Add(s)
                                     Next
                                 End Sub))
     
        End Sub
     
        Dim collection As New List(Of String)
     
     
        Private Sub ping(s As String)
            Try
                Dim p As New Net.NetworkInformation.Ping
                Dim r = p.Send(s, 150)
                If r.Status = Net.NetworkInformation.IPStatus.Success Then
                    collection.Add(r.Status.ToString & " " & s & " " & System.Net.Dns.GetHostEntry(s).HostName)
                Else
                    collection.Add(r.Status.ToString & " " & s)
                End If
            Catch ex As Exception
                collection.Add("err " & s)
            End Try
        End Sub
     
        Private _verrou As New Object
        Private Sub AddToCollectionThreadSafe(s As String)
            SyncLock _verrou
                collection.Add(s)
            End SyncLock
        End Sub
    Je n'avais pas pense au Synlock et je pense que c'est une erreur typique de debutant. Autre question : puis-je creer une classe pour gerer le ping et creer un thread dans mon programme principal qui fera appel au thread du ping ?

    Quelque chose comme :

    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
    Sub Main() 
     
          Dim threadPing a new thPing()
     
          Dim th As New System.Threading.Thread(AddressOf threadPing.MainThreadPingHostName)
          th.Start(ip)
     
    end Sub
     
    Public Class thPing
     
           ...... 
     
     
           public sub MainThreadPingHostName(byval obj as Object)
     
                    Dim threads As New List(Of Threading.Thread)
     
                    For i As Integer = 0 To (kassen.Count - 1)
     
                             Dim th As New Threading.Thread(AddressOf ping)
                             th.Start(kassen(i))
                             threads.Add(th)
     
                    Next
     
                    For Each th In threads
                             th.Join()
                    Next
     
           end sub
     
           private Sub ping(...)
     
                       .....
     
          end Sub
           .....
     
    End Class

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par iOops Voir le message
    Je n'avais pas pense au Synlock et je pense que c'est une erreur typique de debutant.
    Je l'avais pas mis au début en me disant que ca devrait passer, mais quand j'ai vu un Nothing dans ma collection j'ai compris qu'il y en avait besoin ^^
    Il y a très peu de classes dans le framework qui sont thread safe

    Citation Envoyé par iOops Voir le message
    Autre question : puis-je creer une classe pour gerer le ping et creer un thread dans mon programme principal qui fera appel au thread du ping ?
    oui
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [Lazarus] Problème étrange avec l'utilisation de la fonction StrToFloat
    Par ovni76 dans le forum Lazarus
    Réponses: 7
    Dernier message: 07/09/2014, 18h01
  2. Réponses: 0
    Dernier message: 02/07/2013, 11h53
  3. Comportement étrange avec "order by"
    Par Warluck dans le forum SQL
    Réponses: 2
    Dernier message: 04/11/2010, 21h06
  4. Comportement étrange avec free.
    Par Rakken dans le forum C
    Réponses: 9
    Dernier message: 17/09/2008, 14h06
  5. Comportement étrange avec les index et "order by"
    Par Dia_FR dans le forum Requêtes
    Réponses: 5
    Dernier message: 18/08/2008, 09h18

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