C # -> RaiseEvent in VB.Net

Mi sto divertendo con TweetInvi in ​​VB.Net, purtroppo ho problemi con la conversione di questo codice in VB.Net. Sono ancora principiante e stavo cercando di ottenere alcune informazioni su RaiseEvent, ma non potevo farlo. Ecco il codice. Voglio eseguire questo evento nel pulsante:

var stream = Stream.CreateFilteredStream(); stream.AddTrack("tweetinvi"); stream.MatchingTweetReceived += (sender, args) => { Console.WriteLine("A tweet containing 'tweetinvi' has been found; the tweet is '" + args.Tweet + "'"); }; stream.StartStreamMatchingAllConditions(); 

Grazie.

In realtà, non stai cercando di generare un evento, ma iscriviti a uno. L’errore IntelliSense che si ottiene quando si converte quel codice in VB.NET è sfortunatamente un po ‘fuorviante.

In termini di eventi, l’operatore += C # è uguale a Delegate.Combine() che aggiunge un altro delegato all’elenco di iscritti di un evento (elenco di gestori di eventi). Un Delegate è semplicemente una class che tiene il puntatore di un altro metodo. I delegati sono usati per fornire un modo semplice per aggirare e invocare metodi attraverso il codice.

Citando la documentazione :

L’operatore += viene anche utilizzato per specificare un metodo che verrà chiamato in risposta a un evento; tali metodi sono chiamati gestori di eventi. L’uso dell’operatore += in questo contesto è indicato come l’ iscrizione a un evento .

Per iscriverti agli eventi in VB.NET devi usare l’ istruzione AddHandler , la cui syntax è:

 AddHandler ,  

Così:

 AddHandler stream.MatchingTweetReceived, _ Sub(sender As Object, args As EventArgs) Console.WriteLine("A tweet containing 'tweetinvi' has been found; the tweet is '" & args.Tweet & "'") End Sub 

– Il carattere di sottolineatura ( _ ) alla fine è solo un modo per dire al compilatore di continuare sulla riga successiva. Nelle versioni più recenti di VB.NET questo non è necessario, ma alcune persone usano ancora VS 2008 e sotto … Mi piace anche averlo lì per rendere più chiaro quali dichiarazioni vanno insieme e quali no.