Bonjour,
Si cela peut t'aider :
Les contrôles dans les Windows Forms sont liés à un thread spécifique et ne sont pas thread-safe. Par conséquent, si vous appelez une méthode d'un contrôle à partir d'un autre thread, vous devez utiliser l'une des méthodes Invoke du contrôle pour marshaler l'appel au thread approprié. Cette propriété peut être utilisée pour déterminer si vous devez appeler une méthode Invoke, ce qui peut être utile si vous ne savez pas quel thread possède un contrôle.
Delegate Sub SetTextCallback(ByVal Recu As String)
est l'objet de type délégué permettant de pointer vers n'importe quelle Sub ayant la même signature.
1 2 3 4 5 6 7 8
| Private Sub SetText(ByVal Recu As String)
If Me.textbox1.InvokeRequired Then
Dim d As New SetTextCallback(AddressOf SetText)
Me.Invoke(d, New Object() {Recu})
Else
me.textbox1.text = Recu
End If
End Sub |
Me.textbox1.InvokeRequired
On teste si le thread de l'appelant se trouve sur un thread différent de celui sur lequel le contrôle a été créé.
lorsque "invoke" requis cela signifie que l'on va devoir communiquer avec un autre thread.
1 2
| Dim d As New SetTextCallback(AddressOf SetText)
Me.Invoke(d, New Object() {Recu}) |
instanciation et assignation(ou "pointage" ou encore "aiguillage") du délégué pour la méthode SetText
Me.Invoke(d, New Object() {Recu}
Exécute le délégué spécifié sur le thread qui détient le handle de fenêtre sous-jacent du contrôle, avec la liste d'arguments spécifiée.
j'espère que cela ta parait un peu moins obscure.
Partager