Bonjour à tous
Je doit réaliser un dialogue TCP/IP entre plusieurs clients. Mon programme fonctionne correctement mais je pense que j'ai un pb d'organisation.
Explications:
J'ai créé une classe de base qui doit être hérité par les 2 classA et classB - principalement pour éviter de ré-écrire la gestion des événements.
1- Pourquoi faut-il faire appel aux méthodes connexionPoint et surcharger OnConnected dans la classA pour que l'événement Connected soit appelé ?
2- Comment alléger l'ensemble ?
Merci
Voici qq lignes de code simplifiées :
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 Public MustInherit Class classBase Public Delegate Sub ConnectedHandler(ByVal sender As Object, ByVal e As String) Public Event Connected As ConnectedHandler Public Sub New() End Sub Public Overridable Sub OnConnected(ByVal e As String) RaiseEvent Connected(Me, e) End Sub End Class Public Class classA Inherits classBase Public Sub New() MyBase.New() End Sub Public Sub Connect(ByVal points() As String) For Each pt As String In points Dim connexion As New classB AddHandler connexion.Connected, AddressOf connexionPoint connexion.Connect(pt) Next End Sub Private Sub connexionPoint(ByVal sender As Object, ByVal e As String) OnConnected(e) End Sub Public Overrides Sub OnConnected(ByVal e As String) MyBase.OnConnected(e) End Sub End Class Public Class classB Inherits classBase Public Sub New() MyBase.New() End Sub Public Sub Connect(ByVal point As String) 'traitements '.... 'Connexion ok OnConnected(point) End Sub End Class Public Class frmMain Inherits Windows.Forms.Form Private WithEvents _classA As classA Private WithEvents Button1 As New Windows.Forms.Button Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click _classA = New classA _classA.Connect(New String() {"A", "B"}) End Sub Private Sub _test_Connected(ByVal sender As Object, ByVal e As String) Handles _classA.Connected Console.WriteLine("Connexion " & e) End Sub End Class
Partager