Bonjour,

Mon problème est un peu complexe à mes yeux alors j'espère que je vais être capable de bien l'expliquer.

Quand je clique sur le bouton Démarrer un traitement s'exécute, mais je veux que l'utilisateur puisse cliquer sur Arrêter pour arrêter le traitement, alors je lance mon traitement dans un thread:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
    Private Sub cmdDemarrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDemarrer.Click
        nouveauThread = New Thread(AddressOf copiage)
 
        nouveauThread.Start()
    End Sub

Dans mon traitement je modifie mon interface, mais pour ce faire je dois créer un Event. que j'ai fait comme suis:
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
    'Modifier le listBox destination
    Private Event lstboxChanged(ByVal table As String, ByVal clear As Boolean)
    Delegate Sub AssignerLstbox(ByVal table As String, ByVal clear As Boolean)
    Private Sub AfficherTable(ByVal table As String, ByVal clear As Boolean) Handles Me.lstboxChanged
 
        If lstDestination.InvokeRequired Then
 
            Dim moi As New AssignerLstbox(AddressOf AfficherTable)
 
            Invoke(moi, New Object() {table, clear})
 
        Else
            If clear Then
                lstDestination.Items.Clear()
            Else
                lstDestination.Items.Add(table)
            End If
 
        End If
 
    End Sub
Et je lance un RaiseEvent lstboxChanged(strNomTable, False) pour modifier mon listbox.


Cependant je dois maintenant utiliser une fonction d'une dll (que j'ai accès au code) et dans cette fonction je voudrais pouvoir modifier un élément de mon interface.

Alors je me demande comment faire?

Voici ce que j'ai fait mais ça ne fonctionne pas.
DANS maDLL:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
    Public Event modifierProgressB(ByVal pourcentage As Double, ByVal pb As Windows.Forms.ProgressBar)
Protected Overloads Function ImporterR() As Integer
                RaiseEvent modifierProgressB(intCpt / nbEnr * 100, progressBarre)
 
End Function

DANS MON frmPRINCIPALE:
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
Imports maDLL
Public Class frmPrincipale
    Delegate Sub AssignerProgressT(ByVal progression As Double, ByVal pb As Windows.Forms.ProgressBar)
 
    Private Sub AfficherProgressT(ByVal progression As Double) Handles maDLL.modifierProgressB
 
        If pgbTable.InvokeRequired Then
 
            Dim moi As New AssignerProgressT(AddressOf AfficherProgressT)
 
            Invoke(moi, New Object() {progression})
 
        Else
 
            pgbTable.Value = CInt(progression)
 
        End If
 
    End Sub
End Class
J'ai une erreur sur maDLL dans frmPrincipale....

Je suis à bout c'est vendredi, pte que je vais trouver de quoi lundi.

Merci d'y jeter un coup d'oeil.