Hallo *,
ich hoffe ihr könnt mir hier bei meinem Problem weiterhelfen.
Aktuell arbeite ich an einem Verwaltungsrechner, der mehrere Prozesse gleichzeitig abarbeitet. Hierfür verwende ich einen Thread, der permanent in einer do Schleife läuft.
Im Hauptthread springe ich nun in einen weiteren Thread, wenn eine IF Bedingung erfüllt ist (Bsp.: ThreadPruefe1Pruefung).
In diesem Thread wird allerdings eine Kommunikation zu anderen Maschinen benötigt (RS232 und TCPIP Verbindungen), die vorher im ersten Thread geöffnet wurden. Aus diesem Grunde benutze ich die Invoke Methode und führe über eine Case Einweisungen Befehle aus.
Eigentlich funktioniert diese Vorgehensweise ganz gut, nur leider bekomme ich ab und an die bekannte Fehlermeldung "ungültiger threadübergreifender Vorgang" in
TextBoxM1.Invoke(New BefehlFuerM1(AddressOf BefehleAusThreadNachM1), "Starten")
Ich habe es auch bereits mit der
Abfrage versucht, leider ohne Erfolg.
Vielleicht hat jemand von euch eine Idee und hoffe ich konnte mein Problem halbwegs verständlich erklären.
Vorab bedanke ich mich schon einmal für eure Hilfe.
ich hoffe ihr könnt mir hier bei meinem Problem weiterhelfen.
Aktuell arbeite ich an einem Verwaltungsrechner, der mehrere Prozesse gleichzeitig abarbeitet. Hierfür verwende ich einen Thread, der permanent in einer do Schleife läuft.
VB.NET-Quellcode
- Public Sub ThreadHauptablaufStarten()
- ThreadHauptablauf = New System.Threading.Thread(AddressOf Hauptablauf)
- ThreadHauptablauf.IsBackground = True
- ThreadHauptablauf.Start()
- End Sub
- Public Sub Hauptablauf()
- Do
- HauptThread()
- System.Threading.Thread.Sleep(2000)
- Loop Until My.Settings.HauptthreadAn = False
- ThreadHauptablaufStoppen()
- End Sub
- Public Sub HauptThread()
- If A = True Then
- ThreadPruefe1Pruefung = New System.Threading.Thread(AddressOf Pruefe1)
- ThreadPruefe1Pruefung.Start()
- End If
- If B = False Then
- End if
- '....
- End Sub
Im Hauptthread springe ich nun in einen weiteren Thread, wenn eine IF Bedingung erfüllt ist (Bsp.: ThreadPruefe1Pruefung).
In diesem Thread wird allerdings eine Kommunikation zu anderen Maschinen benötigt (RS232 und TCPIP Verbindungen), die vorher im ersten Thread geöffnet wurden. Aus diesem Grunde benutze ich die Invoke Methode und führe über eine Case Einweisungen Befehle aus.
Eigentlich funktioniert diese Vorgehensweise ganz gut, nur leider bekomme ich ab und an die bekannte Fehlermeldung "ungültiger threadübergreifender Vorgang" in
TextBoxM1.Invoke(New BefehlFuerM1(AddressOf BefehleAusThreadNachM1), "Starten")
Ich habe es auch bereits mit der
Abfrage versucht, leider ohne Erfolg.
Vielleicht hat jemand von euch eine Idee und hoffe ich konnte mein Problem halbwegs verständlich erklären.
Vorab bedanke ich mich schon einmal für eure Hilfe.