jean67190
Messages postés44Date d'inscriptionlundi 25 février 2019StatutMembreDernière intervention 3 septembre 2020
-
1 sept. 2020 à 15:57
Whismeril
Messages postés19034Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 2 mai 2024
-
3 sept. 2020 à 13:33
Bonjour,
J'essaye de faire un thread en vb.net, mais la je bloque. Pourtant j'ai pas mal cherché sur internet.
Je voudrais que ce thread tourne en arrière plan en mettant des labels à jour sur le form. Apparemment impossible.
A aussi, dans un autre, il doit mettre un webbrowser à jour (pas encore testé).
De plus (en enlevant la question des labels pour test) quand je fais une boucle FOR x=0 to y, je n'ai pas la main sur les contrôles du form tant que la boucle n'est pas finie.
Voici mes test :
' Déclaration
Private tTask1 As System.Threading.Thread
Private mreTask1 As System.Threading.ManualResetEvent
Private Delegate Sub dTask1()
Private leStop As Boolean = False
Private lelien(6) As String
' Initialisation
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
mreTask1 = New System.Threading.ManualResetEvent(False)
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"
End Sub
' Premier test thread
Private Sub Task1()
Me.BeginInvoke(New dTask1(AddressOf sTask1))
System.Threading.Thread.Sleep(1500)
Do While leStop = False
System.Threading.Thread.Sleep(100)
Loop 'Until ProgressBar1.Value >= ProgressBar1.Maximum
End Sub
'Second test Thread
Private Sub Task1()
Do While leStop = False
Me.BeginInvoke(New dTask1(AddressOf sTask1))
System.Threading.Thread.Sleep(100)
Loop 'Until ProgressBar1.Value >= ProgressBar1.Maximum
End Sub
'Sous tache Premier test (j'ai fait 2 boucles pour voir)
Private Sub sTask1()
Dim element As XmlNodeList
Dim noeud As XmlNode
Dim noeudEnf As XmlNode
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Dim XmlDoc As XmlDocument = New XmlDocument()
For iii As Integer = 0 To 2
Label3.Text = lelien(iii)
Label3.Refresh()
Label4.Text = iii
Label4.Refresh()
Console.WriteLine("iii : " & iii & " ==> " & lelien(iii))
Console.WriteLine("==============================================")
XmlDoc.Load(lelien(iii))
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
Next
For iii As Integer = 3 To 5
Label3.Text = iii
Label3.Refresh()
Label4.Text = lelien(iii)
Label4.Refresh()
Console.WriteLine("iii : " & iii & " ==> " & lelien(iii))
Console.WriteLine("================================================")
XmlDoc.Load(lelien(iii))
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
Next
leStop = True
End Sub
'Sous tache Second test
Private Sub sTask1()
Dim element As XmlNodeList
Dim noeud As XmlNode
Dim noeudEnf As XmlNode
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Dim XmlDoc As XmlDocument = New XmlDocument()
Parallel.For(0,
5,
Sub(iii)
Try
Label3.Text = lelien(iii)
Label3.Refresh()
Label4.Text = iii
Label4.Refresh()
Catch ex As Exception
End Try
Console.WriteLine("iii : " & iii & " ==> " & lelien(iii))
Console.WriteLine("===============================================")
XmlDoc.Load(lelien(iii))
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)
leStop = True
End Sub
'Bouton appelant
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
leStop = False
tTask1 = New System.Threading.Thread(AddressOf Task1)
tTask1.IsBackground = True
tTask1.Start()
End Sub