realbasic-nug.fr
[Top] [All Lists]

Re: Interface figée, Threads et Application.DoEvents

To: REALbasic NUG French <realbasic-nug dot fr at lists dot realsoftware dot com>
Subject: Re: Interface figée, Threads et Application.DoEvents
From: Powel <powel at mac dot com>
Date: Sun, 12 Aug 2007 10:44:47 +0200
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot fr at lists dot realsoftware dot com
References: <B11F96A0-B401-43A1-886D-C4BF1BCD2C83 at mac dot com> <0C6A6DC9-25F5-4477-B314-2CD1B61E9700 at realsoftware dot fr> <0028EF3D-03CB-46C5-95CA-6AD04A5A9BF7 at mac dot com> <F9B3DE44-54B1-4B74-90F3-4B0253B02D70 at realsoftware dot fr>
HTTPSocket me semble être extrêmement efficace dans la plupart des cas et son implémentation est très agréable. Cependant, dans mon cas 0 : - Il me génère des erreurs de type 9 pour lesquelles je n'ai aucune information alors que Curl n'a pas de problèmes. - Il a une interprétation script du HTTP que n'ont pas la plupart des sites. Du coup, de nombreuses URL ne fonctionnent pas (ex que nous avons vu ensemble : http://www.internetactu.net?feed=rss2)
- Il ne gère pas les redirections.
- Le programme est instable.

Les problèmes 2 et 3 peuvent être résolus, ce que j'ai fait. En revanche, je ne parviens pas à résoudre l'erreur de type 9 et l'instabilité. Avec CurlMSB, je n'ai jamais eu de plantage.

Sinon, le problème est le suivant :
Mon programme lit des fils RSS en parallèle en utilisant des threads. Ces threads gèrent deux choses : - L'affichage dans l'interface (listbox) de l'état du chargement du RSS (en cours ou terminé pour ne pas surcharger) - Le lancement du chargement de chaque URL en utilisant aussi des threads afin de ne pas être bloqué par des pages ou des sites dont le chargement est trop long et profiter au maximum de la bande passante.

Les threads de chargement des URL font deux choses :
- Affiche l'état du chargement (en cours, terminé ou l'erreur)
- Enregistre le résultat dans une base de données.

C'est en théorie assez simple. Dans la pratique, mon interface est figée, malgré toutes les techniques que je connais (refresh de la fenêtre dans un timer ou refresh de la fenêtre après chaque chargement, ou refresh des seuls éléments réactualisés après chaque événement qui les affectent). Rien ne fonctionne.

C'est pourquoi je m'intéresse à App.DoEvents, que je ne connais pas !

Powel


P.-S. J'ai aussi essayé avec le Shell en utilisant Curl directement en ligne de commande. Le problème est exactement le même.



Le 11 août 07 à 20:18, Stéphane Pinel a écrit :


Le 11 août 07 à 13:44, Powel a écrit :

Il n'y a pas ce problème avec des centaines de HTTPSocket (non en thread mais avec l'option YieldTime), mais ces derniers ne sont pas assez "fiables" pour ce genre de tache.

Peux-tu m'en dire plus ?

Par exemple, en quoi HTTPSocket n'est pas fiable pour ce type de taches ?

Merci.

---
Stéphane Pinel
Support Technique en Français
stephane at realsoftware dot fr - http://www.realsoftware.fr
43, Rue Marius Aufan 92300 Levallois-Perret (FR)

Rejoignez la communauté francophone des développeurs REALbasic :
http://www.realsoftware.com/fr/support/listmanager/








<Prev in Thread] Current Thread [Next in Thread>