codice:
Public Class NomeClasse
    Public Event NomeEvento(ByVal NomeParametro As String)
    Private Worker As New Thread(AddressOf Prova)
    '...altro...

    Public Sub Controllo()
        Worker.Start()
    End Sub

    Public Sub Prova()
        Try
            While (DoRead)
                RaiseEvent NomeEvento(SP.ReadLine())
            End While
        Finally
            SP.Close()
            SP.Dispose()
        End Try
    End Sub
Occhio però che nel gestire l'evento dovrai tenere conto del fatto che il tuo gestore eventi è in un altro thread rispetto al resto dell'interfaccia utente, per cui non potrai accedere direttamente ai controlli (per ulteriori informazioni, leggi questo articolo).