vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Multithreading, Multiclient und Controls 
Autor: dotty
Datum: 03.03.16 23:42

Hallo Manfred,

ich habe die Invokes auch eigentlich bereits drin und gerade gemerkt, dass mit oder ohne "CheckForIllegalCrossCalls" in meinem Fall keinen Unterschied macht. Ich versuch es mal differenzierter.
Generell soll jede Aktion in einem Client an alle andere Clients kommuniziert werden. Das klappt auch soweit.
Das folgende Sub wird in einem Thread im Client ausgeführt um Signale des Servers zu empfangen. Der Thread wird im Load-Event des Formulars gestartet. Das im Thread ausgeführte Sub ist in einem anderen Modul. Der Server sendet jedes empfangene Signal an alle Clients. Wenn der empfangende Client nicht auch der sendende ist, wird das Sub sub_ShowNewPlayer ausgeführt, in welchem die Controls sichtbar gemacht werden. Das Sub sub_ShowNewPlayer wird definitiv durchlaufen und auch die darin enthaltenen Control-Befehle. Im GUI tut sich aber nichts. Eine Fehlermeldung gibt es auch nicht.
    Public Sub subServerRead()
        Dim inStream(10024) As Byte
        Dim strPlayerID As String
 
        While True
            serverStream = clientSocket.GetStream()
            serverStream.Read(inStream, 0, CInt(clientSocket.ReceiveBufferSize))
            returndata = System.Text.Encoding.ASCII.GetString(inStream)
            returndata = returndata.Substring(0, returndata.IndexOf("$"))
            If Left(returndata, 3) = strPlayerAdded Then
                strPlayerID = Right(returndata, 1)
                If strPlayerID <> CStr(srtThisPlayerID) Then 'nur 
                ' empfangende Clients
                    sub_ShowNewPlayer(CInt(strPlayerID))
                End If
            End If
        End While
    End Sub
Das folgende Sub soll die Controls anpassen. Funktioniert aber nur beim sendenden Client, wo es außerhalb des Threads aufgerufen wird.
    Public Sub sub_ShowNewPlayer(srtPlayerID As Short)
        srtNrPlayers = srtNrPlayers + 1
 
        If frmUITable.Controls("pnl_Player" + CStr(srtPlayerID)).InvokeRequired _
          Then
            Dim d As New sub_ShowNewPlayerCallback(AddressOf sub_ShowNewPlayer)
            frmUITable.Controls("pnl_Player" + CStr(srtPlayerID)).Invoke(d, New _
              Object() {srtThisPlayerID})
        Else
            frmUITable.Controls("pnl_Player" + CStr(srtPlayerID)).Visible = True
            frmUITable.Controls("pnl_Player" + CStr(srtPlayerID)).BringToFront()
        End If
 
        If frmUITable.pbxCard1.InvokeRequired Then
            Dim d As New sub_ShowNewPlayerCallback(AddressOf sub_ShowNewPlayer)
            frmUITable.pbxCard1.Invoke(d, New Object() {srtThisPlayerID})
        Else
            frmUITable.pbxCard1.Image = frmUITable.imgList_Cards.Images.Item(1)
        End If
 
 
        frmUITable.stb_Status.Text = returndata
 
    End Sub
Hoffe das war differenziert genug.

Beitrag wurde zuletzt am 03.03.16 um 23:43:53 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Multithreading, Multiclient und Controls1.931dotty02.03.16 18:45
Re: Multithreading, Multiclient und Controls1.128Manfred X03.03.16 18:03
Re: Multithreading, Multiclient und Controls1.147dotty03.03.16 23:42
Re: Multithreading, Multiclient und Controls1.177Manfred X04.03.16 00:16
Re: Multithreading, Multiclient und Controls1.279dotty04.03.16 12:57
Re: Multithreading, Multiclient und Controls1.155Manfred X04.03.16 13:03
Re: Multithreading, Multiclient und Controls1.121dotty04.03.16 13:53
Re: Multithreading, Multiclient und Controls1.100Manfred X04.03.16 16:00
Re: Multithreading, Multiclient und Controls1.112dotty04.03.16 16:51
Re: Multithreading, Multiclient und Controls1.078Manfred X04.03.16 17:04
Re: Multithreading, Multiclient und Controls1.161dotty04.03.16 17:24

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel