Ich schreibe eine VB-Formular-Anwendung, die den Standard-Ausgabestream eines Prozesses umleitet und es in einer Benutzeroberfläche verwendet.VB Formular Cross-Thread-Methode Aufruf mit Parametern
Ich habe Probleme beim Aufrufen von Methoden mit Parametern, die Steuerelemente im Formular vom OutputHandler-Sub aktualisieren.
kann ich eine Methode ohne Parameter aufrufen, so wie
Me.Invoke(New MyDelSub(AddressOf ServerStarted))
der gut arbeitet.
Und ein bisschen Googeln hat mir gesagt, dass ein Verfahren mit Parametern aufzurufen ich dies tun soll:
Dim del As JoinDelegate = AddressOf PlayerJoins
del.Invoke(username)
Mit diesen Delegierten und Verfahren Paar:
Private Delegate Sub JoinDelegate(ByVal username As String)
Private Sub PlayerJoins(ByVal username As String)
PlayersBox.Items.Add(username)
'Do other stuff
End Sub
Aber dies erzeugt ein IllegalOperationException der Zum ersten Mal versucht die Methode, auf ein Steuerelement zuzugreifen.
Die Frage wurde mehrmals gestellt und beantwortet. Zum Beispiel werfen Sie einen Blick auf diesen Beitrag: [Cross-Thread-Betrieb nicht gültig VB.NET] (http://stackoverflow.com/questions/1331009/cross-thread-operation-not-valid-vb-net). Die Verwendung von [Lambda Expressions] (https://msdn.microsoft.com/en-us/library/bb531253.aspx) zur Lösung des Problems kann jedoch syntaktisch interessant sein. –
Ja, ich las ein paar von ihnen durch, konnte einfach nicht herausfinden, wie man das benutzt, um Parameter zu übergeben. Entschuldigung dafür, dumm zu sein;) – JHall