Bonjour,
J'ai une question qui me parait assez récurrente pour avoir balayer la plupart des FAQ et forum ...
Description du projet :
Je possède un formulaire principale nommé baseForm
Je possède un formulaire secondaire qui accueille une TextBox de console nommée consoleForm
Je possède une classe qui effectue plusieurs calcules, nommée PoolingIP
Lorsque l'on clique sur un bouton de baseForm, celui-ci creé un thread qui démarre la Public Sub "ecouteurUDP" de la classe PoolingIP
(Cette sub écoute en permanence sur le portLocal spécifié, les trames UDP)
J'aimerais déjà, que lorsque la sub "ecouteurUDP" se lance, un message dans ma TextBox de mon consoleForm.
J'ai essayé le délégué de cette façon (issu du msdn) :
Je cale donc ca dans mon consoleForm. De cette manière je pensais que mon 'ecouteurUDP' pourrait afficher ce qu'il reçoit grâce à l'appel : consoleForm.SetText("blablabla")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Delegate Sub SetTextCallback([text] As String) Private Sub SetText(ByVal [text] As String) ' InvokeRequired required compares the thread ID of the ' calling thread to the thread ID of the creating thread. ' If these threads are different, it returns true. If Me.textBox1.InvokeRequired Then Dim d As New SetTextCallback(AddressOf SetText) Me.Invoke(d, New Object() {[text]}) Else Me.textBox1.Text = [text] End If End Sub
... Mais non !!
J'ai fait un débogage pas à pas, et je me suis aperçu qu'il ne passe pas par la méthode 'invoke' de SetText !
En fait celà fonctionne si le thread et la Box sont dans le même form. (ce n'est pas le cas ici )
Je m'en réfère à vous ...
Merci pour votre aide.
Partager