Bonjour,

J'essaye de mettre en place un tchat en vb.net dans une application WPF.
J'utilise Remoting et le protocole TCP.
Mon serveur marche et les appels de fonction entre le client et le serveur marche aussi.

Seulement quand je fais ma fonction PoollServer afin de faire un tchat, je l’exécute dans un thread et lors de l’exécution quand il sort du sleep()
J'ai une belle pop up impossible d’exécuter le thread car il n'est pas prioritaire à un autre
.......

Voici l'appel :

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
    Private Sub PollServer()
        Dim _True As Boolean = True
        Do
            Try
                Thread.Sleep(50000)
                Dim clients As ArrayList = Operation.getClients()
                List.Items.Clear()
                For Each clientName As String In clients
                    List.Items.Add(clients)
                Next
                Dim sessionText As String = Operation.getChatSession()
                TchatBox.Clear()
                TchatBox.Text = sessionText
            Catch ex As Exception
                MessageBox.Show("Probleme de connection avec le serveur : " + ex.Message)
            End Try
 
        Loop While _True
    End Sub
 
    Private Sub ButtonSend_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles ButtonSend.Click
        thrd = New Thread(AddressOf PollServer)
        thrd.SetApartmentState(ApartmentState.STA)
        thrd.IsBackground = True
        thrd.Start()
        Operation.AddText(Name + ":\n" + TextSend.Text + "\n\n")
        TextSend.Clear()
    End Sub

appel du server :

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
    <STAThread()> _
    Public Shared Sub Main(ByVal args() As String)
        Try
            ' Création d'un nouveau canal d'écoute sur le port 1069
            Dim op As New Operation()
            Dim channel As TcpChannel = New TcpChannel(1069)
            ' Enregistrement du canal
            ChannelServices.RegisterChannel(channel, True)
            ' Démarrage de l'écoute en exposant l'objet en Singleton sinon il y a SingleCall 
            'mais c'est mieux Singleton d'après ce que j'ai compris (surtout pour les clients qui utilise le meme objet)
            RemotingConfiguration.RegisterWellKnownServiceType(GetType(Operation), _
            "Operation", WellKnownObjectMode.Singleton)
            Console.WriteLine("Le serveur a démarré avec succés")
            Console.ReadLine()
 
            TrackingServices.RegisterTrackingHandler(New TrackingServices())
        Catch
            Console.WriteLine("Erreur lors du démarrage du serveur")
            Console.ReadLine()
        End Try
    End Sub
Si quelqu'un pourrait m'aider car j'ai pas trouver la réponse sur le net ... J'ai essayer de comprendre les Dispatcher.Invoke et backgroundWorker sans succès et je me dis que ça doit être simple pourtant avec le Framework 4...

Merci d'avance !