Salut,
Tu peux te servir des événements.
Voici un exemple d'une classe simple les utilisant :
Public Class clsMaClasse
Public Event AvantEvent As AvantDelegate
Public Event ApresEvent As ApresDelegate
Public Delegate Sub AvantDelegate(ByVal sender As Object, ByVal e As clsEventArgs)
Public Delegate Sub ApresDelegate(ByVal sender As Object, ByVal e As clsEventArgs)
Public Sub MaMethode1()
'code
' ....
RaiseEvent AvantEvent(Me, New clsEventArgs(0, "debut"))
End Sub
Public Sub MaMethode2()
'code
'...
RaiseEvent AvantEvent(Me, New clsEventArgs(1, "debut"))
End Sub
Public Sub Execution()
'code
'...
RaiseEvent ApresEvent(Me, New clsEventArgs(-1, "fin"))
End Sub
Public Class clsEventArgs
Private _arg1 As String
Private _arg2 As String
Public Sub New(ByVal Arg1 As Integer, ByVal Arg2 As String)
_arg1 = Arg1
_arg2 = Arg2
End Sub
Public ReadOnly Property Arg1() As Integer
Get
Return _arg1
End Get
End Property
Public ReadOnly Property Arg2() As String
Get
Return _arg2
End Get
End Property
End Class
End Class
Voici maintenant comment tu pourrait l'utiliser dans ton cas :
Public Class Form1
Private MaClasse As New clsMaClasse
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'on rajoute les handlers avant et apres
AddHandler MaClasse.AvantEvent, AddressOf Avant
AddHandler MaClasse.ApresEvent, AddressOf Apres
'on fait executer methode 1
MaClasse.MaMethode1()
'puis methode 2
MaClasse.MaMethode2()
End Sub
Private Sub Avant(ByVal sender As Object, ByVal e As clsMaClasse.clsEventArgs)
MessageBox.Show(e.Arg1 & ": " & e.Arg2)
'code a executer avant a mettre ci-dessous (ton loader)
'....
MaClasse.Execution()
End Sub
Private Sub Apres(ByVal sender As Object, ByVal e As clsMaClasse.clsEventArgs)
MessageBox.Show(e.Arg1 & ": " & e.Arg2)
'code a executer après l'execution de la classe
End Sub
End Class
Bien entendu, il est possible de mettre autant d'arguments que tu veux dans ta classe afin de les récupérer lors des événements.
A bientôt.