Bonjour

J'ai un problème assez conséquent sur mon programme Serveur. En effet, je créer un Thread d'écoute à chaque connexion de nouveau client. Voici ce Thread : (allégé au maximum)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Private Sub start_listen2(ByVal clientNumber As Integer)
 
        Dim cod_char As String
        If (clientNumber = 1) Then
            cod_char = codeChariottextBox.Text
        Else
            cod_char = codeChariottextBox1.Text
        End If
 
        Dim idinstruction as integer
        Dim Reader As OracleDataReader
 
        Do
            Dim Requete As String = ****
            Dim Commande As New OracleCommand(Requete, ConnexionOracle)
 
            Try
                Reader = Commande.ExecuteReader()
                While Reader.Read()
                 idinstruction = Reader(0).ToString()
 
                    comandeTab(clientNumber) = Nothing
                    comandeTab(clientNumber) = idinstruction
 
                End While
                Reader.Close()
            Catch ex As Exception
                /
            Finally
               /
            End Try
 
            SendMsgToClient(comandeTab(clientNumber), clientNumber)
            comandeTab(clientNumber) = Nothing
            While (reponseTab(clientNumber) <> "OK")
                System.Threading.Thread.Sleep(1)
            End While
            reponseTab(clientNumber) = Nothing
            affichTerm(id)
 
        Loop While (instru <> "FTOUR")
 
    End Sub
En gros : pour chaque client qui se connecte, il reçoit le premier Id d'une plage qui lui est défini. Le Thread se met en pause tant que je n'ai pas envoyé "OK" de mon client. Une fois que j'envoie "OK" de mon client, mon serveur lui renvoie un nouveau id de la plage et ainsi de suite (voir capture ci dessous)



Mon soucis : lorsqu'un second client(2 par exemple) se connecte (avec une plage d'ID qui lui est propre) il va en premier lieu recevoir son ID et l'ID en cours de la plage de l'autre client(1). Une fois que j'ai cliqué sur OK, il reçoit bien ses propres ID tant que je clique sur OK. (voir capture ci dessous)



Si jamais je renvoie Ok avec mon autre client(1), celui-ci va d'abord recevoir le dernier ID envoyé au client 2 puis les bons ID liés au client (1).

En gros, j'ai un peu l'impression que mon tampon de Reader envoie dans la bonne case du tableau comandeTab(ClientNumber) son ancienne valeur Readé et pas la nouvelle.

J’espère que c'est assez clair comme description de problème.

BB59