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.