Bonjour à tous,
j'ai un thread "ProcessWatcher" qui contrôle le fonctionnement d'un Processus windows et qui possède une méthode qui envoie directement un message toutes les secondes à l'UI.
Pour faire le cross-Thread j'utilise ceci dans le Form qui doit afficher le message :

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
 Delegate Sub DelegateAfficheMessage(ByVal Message As String, StatusAlerte As StatusAlerte)
#Region "Methodes invoquées utilisés par le Thread ProcessWatcher"
        Private Sub InvoquerAfficheMessage(ByVal Message As String, StatusAlerte As StatusAlerte)
            If Me.InvokeRequired Then
                Dim MyDelegate As New DelegateAfficheMessage(AddressOf AfficheMessageLauncherAC)
                Me.Invoke(MyDelegate, Message, StatusAlerte)
            Else
                Call AfficheMessage(Message, StatusAlerte)
            End If
        End Sub
 
        Private Sub AfficheMessage(ByVal Message As String, StatusAlerte As StatusAlerte)
            ToolStripStatusLabel3.Text = Message
 
            Select Case StatusAlerte
                Case StatusAlerte.Normal
                    ToolStripStatusLabel3.Image = My.Resources.status_offline
                Case StatusAlerte.Vert
                    ToolStripStatusLabel3.Image = My.Resources.status
                Case StatusAlerte.Orange
                Case StatusAlerte.Rouge
            End Select
        End Sub
L'invoke se fait donc dans le Form. J'aimerais changer ça et créer un évent du Thread qui envoie des messages Thread-safe. Ainsi mes Form n'ont plus qu'a s'abonner sans faire d'invoke puisque déjà exécuté depuis l'Event du Thread.
J'ai trouvé un exemple de code en C# qui ressemble de loin à ce que je veux faire mais je n'ai pas réussi à le convertir, et surtout je ne sait pas si c'est possible à faire en VB.NET. Est ce que quelqu'un peux m'aider s'il vous plait ?

Voici l'exemple en C# mais c'est pour du "PropertyChanged", mon Event à moi s'appellerait plutôt "AfficheMessage" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
        public event PropertyChangedEventHandler PropertyChanged;
 
        [NotifyPropertyChangedInvocator]
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }