2010-10-24 4 views
0

J'essaie d'invoquer le suivant mais le EventHander n'est pas compatible avec le RasConnectionEventArgs de mon événement appelant, comment j'appellerais SetOverlayIcon et mon icône de notification sur le fil de l'interface utilisateur?EventHandler Invocation de la question

Public Sub watcher_Connected(ByVal sender As Object, ByVal e As RasConnectionEventArgs) 

    If InvokeRequired Then 
     BeginInvoke(New EventHandler(AddressOf OnRegChanged)) 
    Else 

     TaskbarManager.Instance.SetOverlayIcon(My.Resources.LockIcon, "Connected") 
     Me.NotifyIcon.ShowBalloonTip(5000, "Connected", e.Connection.EntryName, ToolTipIcon.Info) 

End Sub 

alt text

Répondre

2

réponse de Jeff Winn à votre demande d'assistance:

La classe RasConnectionWatcher est multi-thread, en tant que tel vous avez juste besoin pour définir la propriété SynchronizingObject sur le composant . Si vous avez le composant sur un formulaire, vous pouvez définir à l'instance de formulaire. Il va gérer automatiquement la synchronisation de thread pour une fois qu'il a été défini.

Ou le font ressembler à ceci:

If InvokeRequired Then 
     BeginInvoke(New EventHandler(Of RasConnectionEventArgs)(AddressOf watcher_Connected), sender, e) 
    Else 
     '' etc... 
    End If 

Je devine au nom du type de délégué.

+0

Salut Hans, j'ai vérifié la documentation pour tous les gestionnaires d'événements, rien d'évident. J'ai joint une photo du disponible. – madlan

+0

Faites-en un nouveau EventHandler (Of RasConnectionEventArgs) (AddressOf watcher_Connected) –

+0

Ahh ça marche aussi, merci Hans. – madlan