Wie geht das in VB.Net?

engelmarkus

Erfahrenes Mitglied
Hallo zusammen!
Ich hab hier ein kleines Code-Stückchen in C#, und wollte das gerade in VB.Net übersetzen, aber ich weiß nicht, wie man das hier macht:

Code:
        public delegate void ChatEventHandler(object sender, ChatEventArgs e);
        public static event ChatEventHandler ChatEvent;
        private ChatEventHandler myEventHandler = null;

        private void BroadcastMessage(ChatEventArgs e)
        {
            ChatEventHandler temp = ChatEvent; // Sowas darf ich ja in VB.Net nicht?
                        
            if (temp != null)
            {
                foreach (ChatEventHandler handler in temp.GetInvocationList())
                {
                    handler.BeginInvoke(this, e, new AsyncCallback(EndAsync), null);
                }
            }
        }

Das mit den Events find ich sehr verwirrend :confused:
 
Ja nur leider benutzt der nicht mal "AddHandler", sondern einfach "+="... und das ist natürlich auch nicht möglich. Der Rest geht erst recht nicht...

Code:
'multicast delegate for invocation
ChatEvent += myEventHandler  ' AddHandler ChatEvent, AddressOf ... wäre richtig
Dim list As Person() = New Person(chatters.Count) {}

Okay... "Econ NetVert" scheint das mit den Events besser zu können. Dafür steht manchmal an den unsinnigsten Stellen "AddressOf". Kennt vielleicht noch jemand einen Konverter, der das mit den Events besser beherrscht?

Den Codeteil von oben hab ich allerdings immer noch nicht hingekriegt? Kann mir da jemand weiterhelfen?
 
Zuletzt bearbeitet:
Vielleicht hab ich dich ja falsch verstanden, aber der .Net Reflector spuckt mir das hier aus:

Code:
  Dim temp As ChatEventHandler = ChatService.ChatEvent
    If (Not temp Is Nothing) Then
        Dim handler As ChatEventHandler
        For Each handler In temp.GetInvocationList
            handler.BeginInvoke(Me, e, New AsyncCallback(AddressOf Me.EndAsync), Nothing)
        Next
    End If

Da bin ich mir aber sicher, dass das nicht geht in der 1. Zeile. Das Gleichsetzen mit dem Event ist in VB.Net nicht möglich, oder?
 
Zurück