Ungültiger threadübergreifender Vorgang

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Ungültiger threadübergreifender Vorgang

    Hallo,

    ich bin noch in den Anfängen der VB-Programierung und hätte folgendes Problem.
    Ich möchte über die Serielle Schnittstelle Daten einlesen und diese dann in einem Label ausgeben. Dies lässt VB aber nach meinem Code leider nicht zu, da der Ereignis Thread nicht das Steuerelement verwenden kann soweit ich das richtig verstanden habe.

    Hier der Code:

    Imports System.IO.Ports
    Public Class Form1
    Dim WithEvents Port1 As New SerialPort("COM3")

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Port1.BaudRate = 9600
    Port1.Open()
    End Sub

    Private Sub Port1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles Port1.DataReceived
    lb1.Text = Port1.ReadExisting
    End Sub
    End Class

    1.Kann mir jemand evtl. bei meinem Problem helfen?
    2. Weiß jemand eine gute Internetseite,um die VB Programierung von Grund auf zu lernen?



    Vielen Dank für jede Hilfe

    vpluscola schrieb:

    VB.NET-Quellcode

    1. lb1.Text = Port1.ReadExisting
    Machst Du so:

    VB.NET-Quellcode

    1. Private Sub SerialPort1_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
    2. Me.Invoke(Sub() Me.Label1.Text = Me.SerialPort1.ReadExisting)
    3. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!