Bonjour,
Désolé de vous déranger, j'ai un petit problème avec les threads et les classes.
Je 'sais' réaliser une opération cross-threads avec les Delegate ainsi que je sais réaliser une opération cross-class avec "Form1.[...]", cependant je n'arrive pas à modifier le texte d'une TextBox qui soit sur une classe distante, lancé par un thread, exemple:
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 Imports System.Threading Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim newTest As New Test Dim newThread As Threading.Thread = New Thread(AddressOf newTest.start) newThread.Start() End Sub End Class Public Class Test Delegate Sub SetTextCallback(ByVal text As String) Private Sub Message(ByVal text As String) If Form1.TextBox1.InvokeRequired Then Dim d As New SetTextCallback(AddressOf Message) Form1.Invoke(d, New Object() {text}) MsgBox("A") Else MsgBox("B") Form1.TextBox1.Text &= vbCrLf & text End If End Sub Public Sub start() Message("Add This") End Sub End Class
Comme vous pouvez le voir, j'ai lancé mon thread afin d'exécuter le Sub distant, start().
Cependant, la TextBox ne se remplit pas et seul la MessageBox "B" s'affiche, ce qui n'est pas le cas quand l'opération n'est pas inter-classe.
Ai-je commis un erreur? ou alors, ai-je simplement utilisé la mauvaise fonction?
Merci d'avance pour votre aide, encore désolé du dérangement.
A+.
Partager