Bonsoir J'essaye de threader une classe qui récupère les mail d'un serveur pop mais j'arrive à un problème :

Création de la classe
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 System
Imports System.Net.Sockets
Imports System.Text
Imports System.IO
Imports System.ComponentModel
 
Public Class Telechargement
    Public WithEvents bgw1 As System.ComponentModel.BackgroundWorker
    Dim Server As TcpClient
    Dim NetStrm As NetworkStream
    Dim RdStrm As StreamReader
    Public Sub New()
        bgw1 = New System.ComponentModel.BackgroundWorker
        bgw1.WorkerReportsProgress = True
        bgw1.WorkerSupportsCancellation = True
        AddHandler bgw1.DoWork, AddressOf bgw1_DoWork
        AddHandler bgw1.RunWorkerCompleted, AddressOf bgw1_RunWorkerCompleted
        AddHandler bgw1.ProgressChanged, AddressOf bgw1_ProgressChanged
    End Sub
Après l'instanciation (Qui est tout a fait inutile =/), j'ai repris du code et retravaillé dessus donc j'ai une méthode
connexion :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
    Public Sub connexion(ByVal hote As String, ByVal login As String, ByVal mdp As String)
 
           Blabla 
 
           bgw1.RunWorkerAsync(nbmessages)
        Return nbmessages
    End Sub
Donc là je débute la récupération des message je lance un thread
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
Private Sub bgw1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgw1.DoWork
 
BlaBla
Dim m As mail = miseenforme(msg)
Boucle récupération
bgw1.ReportProgress((i * 100 / e.Argument), m)
fin boucle
    End Sub
Et là c'est le drame, je veux afficher mon mail au fur et a mesure, mais je voudrais (je suis feignant) ne pas créer d'évènement, je veux pouvoir réutiliser mon évènement

Donc j'ai déclaré mon bgw en public Public WithEvents et instancié comme ceci dans ma fenetre (formulaire) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Public WithEvents t As Telechargement
Mais il m'est impossible de faire un handles ici (toujours dans mon formulaire)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
    Private Sub bgw1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles t.
<<<< J'arrive a placer t parce que j'ai spécifié WithEvents sur "t As Telechargement" mais je n'ai aucun évènement derrière et pas moyen de placer bgw1 même en forcant


Donc je suis bloqué, ca m'embêterais de faire un RaiseEvent sur mon "Private Sub bgw1_ProgressChanged(ByVal sender As Object, ByVal e As Syste...." dans ma classe pour ensuite indiquer et lancer a ma feuille les données de % et les données