Ciao.
La tua domanda prevede il SI/NO come risposta.
Penso che tu non hai afferrato bene il concetto di evento e del codice che hai postato. In pratica dentro una classe tu puoi crearti un evento che serve a far capire a chi "sta in ascolto" che è successa una determinata cosa.
Public Class Class1
' Declare an event.
Public Event Ev_Event() ''Dichiarazione dell'evento
Sub CauseSomeEvent()
' Raise an event.
RaiseEvent Ev_Event() ''Invocazione dell'evento
End Sub
End Class
In questa classe praticamente la Sub 'CauseSomeEvent' quando viene richiamata scatena l'evento 'Ev_Event'. Ora questo evento può essere ascoltato da una, due, N ascoltatori oppure da nessuno.
Nella tua classe utilizzi una istanza di 'Class1'. Dopo che hai dichiarato l'oggetto di tipo 'Class1' ti metti in ascolto del suo evento 'Ev_Event', dicendogli di utilizzare la TUA sub chiamata 'EventHandler' quando Class1 scatena l'evento 'EV_Event' (ti sei messo in ascolto dell'evento)
Sub TestEvents()
Dichiari e inizializzi un oggetto di tipo Class1
Dim Obj As New Class1
' ti metti in ascolto dell'evento e gli dici quale delle tue sub deve utilizzare quando si scatena l'evento (in gergo tecnico stai definendo un delegato)
AddHandler Obj.Ev_Event, AddressOf EventHandler
A questo punto quando la Class1 scatena l'evento 'Ev_Event' il codice andrà ad eseguire quello che c'è nella tua sub definita come delegato.
La chiamata che segue serve a far scatenare l'evento. Se esegui passo passo mettendo un punto di interruzione sulla sub 'EventHandler' vedrai che l'esecuzione del codice si sposta nella sub subito dopo invocata la linea seguente. L'evento in questo caso lo scateni tu stesso richiamando la linea di codice che segue ma nulla ti vieta che l'evento lo possa scatenare la class1 stessa. Ad esempio se in class1 metti un timer che dopo due minuti dall'inizializzazione invoca l'evento, la tua applicazione resta ferma edopo due minuti ti entra nella sub "EventHandler".
Obj.CauseSomeEvent()
' Qui rimuovi l'ascolto dell'evento. Lo devi fare ogni qualvolta vuoi che nonostante l'evento in Class1 si scatena, tu non vuoi ripercussioni nella tua classe
RemoveHandler Obj.Ev_Event, AddressOf EventHandler
End Sub
Sub EventHandler()
' Handle the event.
MsgBox("EventHandler caught event.")
End Sub
Alla luce di questo e soprattuto del codice che hai scritto nella tua applicazione e al comportamento che deve avere, trai l'opportuna risposta.
ciao ciao
Cristian Barca