Merci pour vos contributions. Elles sont précieuses pour l'avancement
de la bonne stabilité de mon application.
Par ailleurs, je me demandais si les HTTPSocket sont considérés comme
des threads. Plus précisément, si on lance une dizaine de Socket avec
yield=true et que l'on souhaite accédé aux propriétés d'une fenêtre,
il serait prudent d'utiliser un semaphore avec signal et release. Est-
ce que cela a un sens dans un HTTPSocket ?
Powel
Le 20 nov. 07 à 13:18, Arnaud Nicolet a écrit :
Le 20 nov. 07 à 10:38 matin, Powel a écrit:
Je souhaiterais que les threads disposent bien d'une référence
précise.
Alors utilisez un tableau (array).
En revanche, à moins de ne pas avoir compris le fonctionnement des
Threads dans RB, je ne peux pas utiliser le même puisque les
Threads en question ont une exécution de 1à 10 secondes. Ils
n'auraient donc pas le temps de s'exécuter complètement et cela
serait contraire à l'intérêt des threads non ? La classe de
référence de mon thread télécharge une page et chaque thread de la
boucle télécharge une page différente.
Ce que je ferais, c'est d'avoir un seul "thread". Ensuite, ce thread
aurait une propriété (par exemple: "PagesToDownload() As String").
Ensuite, dans l'événement "Run", on aurait quelque chose du genre:
dim s As String
do
if UBound(PagesToDownload)=-1 then Exit 'Plus de pages à télécharger
s=PagesToDownload(0)
//Télécharger la page
PagesToDownload.Remove 0
loop
De plus, il faut que le Thread s'exécute quand il y a de nouvelles
pages à télécharger (ce peut être soit quand le Thread fonctionne
(dans ce cas, pas de problème, la boucle téléchargera plus tard) ou
quand le Thread a terminé (ou n'a pas encore commencé)).
J'ajouterais donc une méthode dans le Thread:
Sub AddPageToDownload(Page As String)
PagesToDownload.Append Page
if me.State<>0 then 'Le thread ne marche pas (éventuellement
remplacer par "=4" si vous voulez lancer le Thread que lorsqu'il
n'est pas suspendu ou en cours)
Run
end if
End Sub
Pour ajouter une page à télécharger, il suffit de garder une
référence au Thread (une propriété de la fenêtre, par exemple) et
d'utiliser ce code:
MyThread.AddPageToDownload "http://www.realbasic.com"
Hope this help (j'espère que ça aide).
|