Je rencontre des problèmes avec les événements en cours d'augmentation du thread non-UI, en ce sens que je ne souhaite pas gérer le if me.invokerequired sur chaque gestionnaire d'événements ajouté au thread dans Form1.Obtention d'événements à partir d'un thread en toute sécurité
Je suis sûr d'avoir lu quelque part comment utiliser un événement délégué (sur SO) mais je suis incapable de le trouver.
Public Class Form1
Private WithEvents _to As New ThreadedOperation
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click
_to.start()
End Sub
Private Sub _to_SomthingHappend(ByVal result As Integer) Handles _to.SomthingHappend
TextBox.Text = result.ToString //cross thread exception here
End Sub
End Class
Public Class ThreadedOperation
Public Event SomthingHappend(ByVal result As Integer)
Private _thread As Threading.Thread
Public Sub start()
If _thread Is Nothing Then
_thread = New Threading.Thread(AddressOf Work)
End If
_thread.Start()
End Sub
Private Sub Work()
For i As Integer = 0 To 10
RaiseEvent SomthingHappend(i)
Threading.Thread.Sleep(500)
Next
End Sub
End Class
Je suis allé avec la deuxième suggestion, passant le contrôle de l'hôte (je passe dans un objet de contrôle plutôt que d'un formulaire si). merci – Pondidum