Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate Sub ExempleBGW() Dim bgw As New BackgroundWorker() bgw.WorkerReportsProgress = True 'necessaire pour envoyer l'avancement du calcul AddHandler bgw.ProgressChanged, AddressOf Bgw_ProgressChanged AddHandler bgw.DoWork, AddressOf Bgw_DoWork 'abonne le BGW à la méthode qui fera le travail de fond. AddHandler bgw.RunWorkerCompleted, AddressOf Bgw_RunWorkerCompleted 'abonne le BGW à la méthode qui sera éxécutée quand le travail sera finit bgw.RunWorkerAsync(1000000000.0) 'Démarre le travail de fond avec un paramètre End Sub Private Sub Bgw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Dim max As Integer = Convert.ToInt32(e.Argument) 'un grand tableau de char qu'on va utiliser par la suite Dim caracteres() As Char = {"A"c, "B"c, "C"c, "D"c, "E"c, "F"c, "G"c, "H"c, "I"c, "J"c, "K"c, "L"c, "M"c, "N"c, "O"c, "P"c, "Q"c, "R"c, "S"c, "T"c, "U"c, "V"c, "W"c, "X"c, "Y"c, "Z"c, "a"c, "b"c, "c"c, "d"c, "e"c, "f"c, "g"c, "h"c, "i"c, "j"c, "k"c, "l"c, "m"c, "n"c, "o"c, "p"c, "q"c, "r"c, "s"c, "t"c, "u"c, "v"c, "w"c, "x"c, "y"c, "z"c, "A"c, "B"c, "C"c, "D"c, "E"c, "F"c, "G"c, "H"c, "I"c, "J"c, "K"c, "L"c, "M"c, "N"c, "O"c, "P"c, "Q"c, "R"c, "S"c, "T"c, "U"c, "V"c, "W"c, "X"c, "Y"c, "Z"c, "a"c, "b"c, "c"c, "d"c, "e"c, "f"c, "g"c, "h"c, "i"c, "j"c, "k"c, "l"c, "m"c, "n"c, "o"c, "p"c, "q"c, "r"c, "s"c, "t"c, "u"c, "v"c, "w"c, "x"c, "y"c, "z"c} For i As Integer = 0 To max - 1 'compte de zéro à la valeur passée en argument Dim j As Double = i * 100.0 / max If Math.Floor(i * 100.0 / max) = j Then 'on déclenche un évènement avec les informations de progression et de travail (en l'état un char) CType(sender, BackgroundWorker).ReportProgress(CInt(Convert.ToInt32(j)), caracteres(CInt(Convert.ToInt32(j)))) 'quand on avance d'un %, envoie l'information d'avancement et une information personnelle End If Next i e.Result = "C'est fini!" 'définit un résultat End Sub Private Sub Bgw_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) ProgressBar1.Value = e.ProgressPercentage 'affiche le pourcentage dans une progressbar ListBox1.Items.Add(e.UserState) 'ajoute une ligne dans une listbox End Sub Private Sub Bgw_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) MessageBox.Show(CStr(e.Result)) 'on affiche un messagebox qui montre le résultat End Sub
For i As Integer = 0 To 5 CType(sender, BackgroundWorker).ReportProgress(lelien(i)) Next
Private Sub bgw_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) ListBox1.Items.Add(e.UserState) 'ajoute une ligne dans une listbox Dim element As XmlNodeList Dim noeud As XmlNode Dim noeudEnf As XmlNode ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 Dim XmlDoc As XmlDocument = New XmlDocument() XmlDoc.Load(lelien(e.ProgressPercentage)) element = XmlDoc.DocumentElement.GetElementsByTagName("item") For Each noeud In element For Each noeudEnf In noeud.ChildNodes If (noeudEnf.LocalName = "title") Then Console.WriteLine(noeudEnf.InnerText) End If Next Next End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click x = x + 1 Label1.Text = "Ok : " & x End Sub
For Each noeud In element For Each noeudEnf In noeud.ChildNodes If (noeudEnf.LocalName = "title") Then Console.WriteLine(noeudEnf.InnerText) End If Next Next
Private Sub bgw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Dim max As Integer = Convert.ToInt32(e.Argument) Dim element As XmlNodeList Dim noeud As XmlNode Dim noeudEnf As XmlNode Dim XmlDoc As XmlDocument = New XmlDocument() ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 For i As Integer = 0 To 5 XmlDoc.Load(lelien(i)) element = XmlDoc.DocumentElement.GetElementsByTagName("item") For Each noeud In element For Each noeudEnf In noeud.ChildNodes If (noeudEnf.LocalName = "title") Then Console.WriteLine(noeudEnf.InnerText) CType(sender, BackgroundWorker).ReportProgress(CInt(Convert.ToInt32(i)), noeudEnf.InnerText) End If Next Next Next e.Result = "C'est fini!" 'définit un résultat End Sub Private Sub bgw_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) ListBox1.Items.Add(e.UserState) 'ajoute une ligne dans une listbox ' ' ICI MA MIXTURE POUR LE RESTE, que je testerais ' End Sub
Public Class ArgumentType Public _Le_Url As String Public _Le_Titre As String ' etc ...... End Class Private args(6) As ArgumentType '= New ArgumentType Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load lelien(0) = "https://www.francetvinfo.fr/titres.rss" lelien(1) = "https://news.google.com/news/rss/headlines/section/topic/WORLD?ned=fr&gl=FR&hl=fr" lelien(2) = "https://news.google.com/news/rss/headlines/section/q/lci/lci?ned=fr&hl=fr&gl=FR" lelien(3) = "https://forum.pcastuces.com/forum.xml" lelien(4) = "https://www.extreme-down.video/rss.xml" lelien(5) = "http://www.huffingtonpost.fr/feeds/index.xml" ' Je mettrais le reste dans une boucle args(0) = New ArgumentType args(0)._Le_Url = "https://www.francetvinfo.fr/titres.rss" args(0)._Le_Titre = "France TV" 'etc ..... End Sub Private Sub bgw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) 'Dim max As Integer = Convert.ToInt32(e.Argument) ' ICI JE RECUPERE ' ?args1(0)._Le_Url ' "https://www.francetvinfo.fr/titres.rss" ' ?args1(0)._Le_Titre ' "France TV" Dim args1() As ArgumentType = e.Argument Dim element As XmlNodeList Dim noeud As XmlNode Dim noeudEnf As XmlNode Dim XmlDoc As XmlDocument = New XmlDocument() ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 For i As Integer = 0 To 5 XmlDoc.Load(lelien(i)) element = XmlDoc.DocumentElement.GetElementsByTagName("item") For Each noeud In element For Each noeudEnf In noeud.ChildNodes If (noeudEnf.LocalName = "title") Then Console.WriteLine(noeudEnf.InnerText) CType(sender, BackgroundWorker).ReportProgress(CInt(Convert.ToInt32(i)), noeudEnf.InnerText) End If Next Next Next e.Result = "C'est fini!" 'définit un résultat End Sub ' et je démarre par bgw.RunWorkerAsync(args)