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

Re: ProgressBar

To: REALbasic NUG French <realbasic-nug dot fr at lists dot realsoftware dot com>
Subject: Re: ProgressBar
From: "Boris (Com)" <com at beaude dot net>
Date: Sun, 21 Jan 2007 20:09:24 +0100
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot fr at lists dot realsoftware dot com
References: <FA8559B7-CD58-42A0-9263-354F673206C4 at mac dot com> <5CBC8E68-6629-4BD2-A947-404B869791EE at albireo dot biz> <0C111400-12FB-4C15-A6ED-999C2F487C3E at realsoftware dot fr> <4B9AD5A4-7887-4AB3-87B0-EB6680329836 at albireo dot biz> <478ACC93-EC1C-4FFB-AB30-0E726888792D at mac dot com> <0A07A8CA-19DF-412C-868F-15B9511298BC at albireo dot biz> <F129875E-4164-4DA5-AF2B-DCA4AE83E5EE at beaude dot net> <79B4AFFD-743A-4841-B89A-66A8393AB81A at albireo dot biz> <69CFF131-88BE-495D-BA25-DD419CBA07E8 at beaude dot net> <358ED573-57E2-43A9-8C07-E23B8E248CF7 at albireo dot biz> <588DEDFF-4825-4649-A756-F521A70128C6 at tribu dot ch> <897D631B-D8D0-45FA-BF2A-EE416F89EF4E at briq dot com> <218BD5B8-3C7E-4DA4-8437-BA3575614320 at tribu dot ch>
Excellent le Thread. C'est effectivement plus efficace. Personnellement, je n'ai pas peur de ce genre de truc. Je viens du PHP mais j'y ai un très bon niveau et j'utilise essentiellement des classes dans mes programmes. PHP 5 est extrêmement puissant et riche en fonctionnalités ! Mais c'est visiblement moins rapide que RealBasic. Il me reste un jour pour tester. C'est difficile car je n'ai pas eu le temps de totalement me convaincre de "lâcher " 500 euros. Il y a très peu de documentation sur RealBasic et je trouve les fonctions liées aux tableaux (Array) extrêmement limitées. Sinon, globalement, c'est vraiment intéressant comme plate-forme de développement.

Tant que j'y suis, est-ce que je peux envoyer des variables au thread, comme pour une méthode de class ?

Merci encore :-)



Le 21 janv. 07 à 19:58, Arnaud Nicolet a écrit :

Pour créer un Thread:

1: Créez une nouvelle classe dans le projet.
2: Dans les propriétés de cette nouvelle classe, inscrivez "Thread" dans le champ "Super". Nommez-la comme bon vous semble (exemple: MyWonderfulThread). Voilà, le nouveau Thread a été crée. Maintenant, il faut lui faire exécuter du code.

3: Double-cliquez sur cette classe et allez dans les événements (events) de celle-ci, dans l'événement "Run".
4: Déplacez le code à effectuer dans cet événement.
5: Si vous avez besoin de vous référer à quelque chose de la fenêtre où se trouvait le code avant, ajoutez une référence à la fenêtre dans le Thread (par exemple, "MyWindow As Win1"). Il faudra se référer à cette propriété pour accéder à la fenêtre en question (ne pas oublier de définir la variable à l'instance de la fenêtre). 6: Définissez une propriété destinée à se rappeler du "Thread" (par exemple, dans la fenêtre affichée). Exemple: "Thread1 As MyWonderfulThread".
7: Inscrivez ce code à l'endroit qui vous paraît justifié:

Thread1=New MyWonderfulThread
Thread1.MyWindow=self
Thread1.Run

8: ça devrait fonctionner. Sinon, j'attends de vos nouvelles.

Bonne chance.

Le 18 janv. 07 à 17:26 Soir, Francis Gorge a écrit:

Serait-il possible d'avoir un exemple de création de Thread ?
Le rafraichissement d'une progressbar serait pour moi très utile !
J'aimerai afficher correctement (mettre à jour) ma progressbar pendant que mon application est occupé à copier ou déplacer des fichiers et à compressér des fichiers vidéos.

Merci

Francis


Le 18 janv. 07 à 16:15, Arnaud Nicolet a écrit :

Le 18 janv. 07 à 12:32 Soir, Michel LO a écrit:

Il y a plus efficace :

crée un timer que vous lancez au début de traitement (multiple c'est à dire qui n'arrête pas de tourner) et qui se déclenche toutes les secondes.
Dans le timer, faire un refresh

A la fin du traitement arrêter le timer.

Comme ca, il ne se met à jour qu'une fois par seconde indépendamment de la longueur du traitement.

Pas tout-à-fait. Le "Timer" ne va pas s'exécuter plus que le rafraîchissement de la fenêtre (en d'autres termes: si le rafraîchissement est bloqué pas une boucle exécutée ailleurs, alors le "Timer" aussi, il ne va être exécuté qu'à la fin).

Ce que l'on conseille, en général, c'est de déplacer le code dans un fil d'exécution ("thread" si vous préférez). Pour créer un fil d'exécution, il faut créer une nouvelle classe. Usuellement, une application fonctionne sur le fil d'exécution principal (c'est pour cela que le rafraîchissement ne peut se faire en même temps qu'autre chose). En créant un nouveau fil d'exécution, on fait les choses en "parallèle", c'est comme du multitâche, mais dans la même application.







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