Public Class MyEvents Public Delegate Sub Event1Delegate(ByVal nValue As Integer) Public Delegate Sub Event2Delegate _ (ByVal sValue As String, ByVal sender As Object) Public Event Event1 As Event1Delegate Public Event Event2 As Event2Delegate Public Sub PerformProcess() 'Perform Step RaiseEvent Event1(50) 'Perform Final Step RaiseEvent Event2("Done", Me) End Sub End Class Public Class MyUser Private WithEvents Events As MyEvents Public Sub New() Events = New MyEvents() End Sub Private Sub Event1Handler(ByVal nValue As Integer) Handles Events.Event1 MsgBox(nValue.ToString()) End Sub Private Sub Event2Handler _ (ByVal sValue As String, ByVal sender As Object) Handles Events.Event2 MsgBox(sValue) End Sub Public Sub UseObject() Events.PerformProcess() End Sub End Class