2013-09-02 1 views
0

je fonction pour envoyer e-mail dans un module où je l'ai déclaré mon événement personnalisé:de capture d'évènements du module

Public Module myModule 
    Public Event emailCompleted() 

Dans ce module, j'ai fonction qui sont déclenchées lorsque l'envoi d'email est terminée:

Private Sub SendCompletedCallback(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) 
    If e.Error Is Nothing Then 
     RaiseEvent emailCompleted() 
    End If 
End Sub 

Tout cela fonctionne bien, comme prévu.

Le problème est que je ne sais pas comment attraper cet événement dans mon programme principal qui appelle la fonction sendemail.
Comment faire cela?

Répondre

1

Vous ne pouvez déclencher des événements à l'intérieur d'une classe et les traiter en dehors de cette classe:

Public Class myModule 
    Public Event emailCompleted() 
    Private Sub SendCompletedCallback(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) 
     If e.Error Is Nothing Then 
      RaiseEvent emailCompleted() 
     End If 
    End Sub 

et dans votre module de code d'appel:

dim WithEvents myModuleObject as MyModule 

Sub HandleEvent() Handles myModuleObject.emailCompleted 
... 
+0

JE déclencher un événement dans le module sans erreur, mais ne peut pas l'attraper dehors. Quoi qu'il en soit, merci, je vais reconstruire un programme pour que cela fonctionne avec la classe. –

+0

Oui, vous * pouvez * déclencher un événement dans un module, mais il ne peut pas être intercepté. Vous avez besoin d'une variable de classe déclarée 'WithEvents', et pour cela vous avez besoin d'une classe. –

+0

Le faire fonctionner: Dim WithEvents se As New sendSMTP. Ne peut pas travailler sans mot-clé NEW. Est-ce normal? –