Polo, j' ai fait ma classe et ca marche vraiement bien. J'ai remplace la collection que tu proposes par une liste de machine. du coup je retrouve mes petits!
Il y a un truc qui reste pas tres clair. Ici le syncLock est dans private sub et je ne fais jamais appel a cette fonction. J'en deduit que des que je fais un .add, le programme va detecter tout seul un synclock. C'est 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
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 Private Sub ping(ByVal obj As Object) Dim ip = New String(obj) Dim m As machine Try Dim p As New Net.NetworkInformation.Ping Dim r = p.Send(ip, 150) If r.Status = Net.NetworkInformation.IPStatus.Success Then m = New machine m.hostname = System.Net.Dns.GetHostEntry(ipOrHostname).HostName m.ip= System.Net.Dns.GetHostEntry(ipOrHostname).AddressList(0).ToString m.EtatMachine = True etatMachine.Add(m) Else m = New machine m.EtatMachine= False If ipAddr.isIPv4(ip) Then m.ip= ip Else m.hostname = ip End If etatMachine.Add(m) End If Catch ex As Exception m = New machine If ipAddr.isIPv4(ip) Then m.ip= ip Else m.hostname = ip End If m.EtatMachine = False etatMachine.Add(m) End Try end Sub Private _verrou As New Object Private Sub AddToCollectionThreadSafe(ByVal m As machine) SyncLock _verrou etatMachine.Add(m) End SyncLock End Sub Public ReadOnly Property Etat() Get Return etatMachine End Get End Property
Je me dis que ce probleme que j'avais avec le ping.async etait du au fait que je ne faisais pas de Synclock. Si je refais la meme chose avec le ping.asnyc + Synlock ca doit marcher de la meme facon non ?
Au moins j'ai pu comprendre pas a pas la nécessité du Snyclock !
Maintenant je vais supprimer au moins deux classes inutilies avec le hostEntry
Je te remercie bcp pour tes remarques et tes explications.
Partager