Achats/Ventes : jcmaximus et 8 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

[C#] Threads et mises à jour

 
n°45068
cruciforme
Artiste incompris
Posté le 16-06-2006 à 15:08:58  profilanswer
 

J'ai un objet qui va récupérer des informations sur le net qui est bien fonctionnel.  
Maintenant j'aimerais utiliser les infos de cet objet dans une gui par exemple et rafraichir les données de l'objet toutes les X secondes.
 
Comment procéder? Lancer un thread qui boucle en faisant un sleep de X secondes et qui lance un thread qui update l'objet.  
L'objet préviendra la gui quand il sera à jour, ça me semble le plus simple.
Quel mécanisme de lock mettre en place pour que la gui ne lise pas les données de l'objet alors que ce dernier ce remet à jour?
 
Ps: J'aurais pu chercher un peu mais Lost s'ennuie :D


Message édité par cruciforme le 16-06-2006 à 15:27:09

---------------
Avec un grand C.. Membre du Club des Nostalgiques d'EUROSPORT| Les recettes de ma copine - RTBF, je t'aime..
n°45069
sebx
boulet cherche canon
Posté le 16-06-2006 à 15:10:14  profilanswer
 

pourquoi t'utilises pas un timer ?


---------------
Célibataire & béhémiste de service
Gentil Organisateur des rencontres matbe
JH 27 ans, bon salaire, propriétaire, roulant en berline Allemande cherche femme pour mariage, bébés et + si affinités
n°45070
cruciforme
Artiste incompris
Posté le 16-06-2006 à 15:10:37  profilanswer
 

C'est pour ça que je pose la question :D
 
Pour la mise à jour de la gui, c'est bien d'utiliser un observer?


Message édité par cruciforme le 16-06-2006 à 15:11:49

---------------
Avec un grand C.. Membre du Club des Nostalgiques d'EUROSPORT| Les recettes de ma copine - RTBF, je t'aime..
n°45071
LostSoul
Vivement TES V
Posté le 16-06-2006 à 15:11:09  profilanswer
 

dans winwin y'a un évènement WM_TIMER que tu peux utiliser, y'a un objet Timer lié qui peut appeler un truc toutes les x millisecondes me semble-t-il. Faire un thread avec une boucle bof ...
 
Pour la synchro tu peux utiliser des sémaphores.


---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°45072
sebx
boulet cherche canon
Posté le 16-06-2006 à 15:11:37  profilanswer
 

tu prends un timer, tu le règles à x secondes et tu accroches ta fonction de rafraichissement à l'évènement du timer et hop  :D
 
pour le lock, bah un boolean  :spamafote:


---------------
Célibataire & béhémiste de service
Gentil Organisateur des rencontres matbe
JH 27 ans, bon salaire, propriétaire, roulant en berline Allemande cherche femme pour mariage, bébés et + si affinités
n°45073
LostSoul
Vivement TES V
Posté le 16-06-2006 à 15:12:17  profilanswer
 

un boolean y'a que 2 états c'est un peu léger


---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°45074
sebx
boulet cherche canon
Posté le 16-06-2006 à 15:12:36  profilanswer
 

pour le refresh de l'écran, tu lances un evènement avec ta fonction de refresh des données qui est chopé par la fonction de refresh de la GUI  :D


---------------
Célibataire & béhémiste de service
Gentil Organisateur des rencontres matbe
JH 27 ans, bon salaire, propriétaire, roulant en berline Allemande cherche femme pour mariage, bébés et + si affinités
n°45075
sebx
boulet cherche canon
Posté le 16-06-2006 à 15:13:01  profilanswer
 

LostSoul a écrit :

un boolean y'a que 2 états c'est un peu léger

 


 

bah pour signaler que des données sont valides ou pas ça suffit bien  :)


Message édité par sebx le 16-06-2006 à 15:13:12

---------------
Célibataire & béhémiste de service
Gentil Organisateur des rencontres matbe
JH 27 ans, bon salaire, propriétaire, roulant en berline Allemande cherche femme pour mariage, bébés et + si affinités
n°45076
cruciforme
Artiste incompris
Posté le 16-06-2006 à 15:13:11  profilanswer
 

sebx a écrit :

tu prends un timer, tu le règles à x secondes et tu accroches ta fonction de rafraichissement à l'évènement du timer et hop  :D
 
pour le lock, bah un boolean  :spamafote:


ouais mais je sais pas s'il y a des mots clés genre volatile et tout ça. Je vais regarder du coté du time :jap:


---------------
Avec un grand C.. Membre du Club des Nostalgiques d'EUROSPORT| Les recettes de ma copine - RTBF, je t'aime..
n°45077
LostSoul
Vivement TES V
Posté le 16-06-2006 à 15:13:50  profilanswer
 

bah ouais mais bon ... si t'as un thread de lecture, un thread de mise à jour ca va, mais si tu commences à faire plusieurs choses sur ton objet ...
 
EDIT : pour la mise à jour : BEGIN_CRITICAL_SECTION :o (en C++ mais en C# je sais pas si y'a l'équivalent)


Message édité par LostSoul le 16-06-2006 à 15:15:01

---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°45078
cruciforme
Artiste incompris
Posté le 16-06-2006 à 15:16:12  profilanswer
 

Enfin en même temps c'est pas super critique, au pire il manquera des arrêts à ma ligne de bus :D


---------------
Avec un grand C.. Membre du Club des Nostalgiques d'EUROSPORT| Les recettes de ma copine - RTBF, je t'aime..
n°45079
LostSoul
Vivement TES V
Posté le 16-06-2006 à 15:17:00  profilanswer
 

Tu bosses pour la STIB ? :p


---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°45080
cruciforme
Artiste incompris
Posté le 16-06-2006 à 15:17:18  profilanswer
 

LostSoul a écrit :

Tu bosses pour la STIB ? :p


Non, pour moi :D


---------------
Avec un grand C.. Membre du Club des Nostalgiques d'EUROSPORT| Les recettes de ma copine - RTBF, je t'aime..
n°45081
sebx
boulet cherche canon
Posté le 16-06-2006 à 15:18:05  profilanswer
 

moi je vois 2 threads : un qui se déclenche toutes les x secondes pour rafraîchir les données d'un objet global et qui en début de thread positionne un booléen "données valides" à false et le remet à true à la fin du rafraîchissement
- un autre thread de rafraichissement d'affichage qui se déclenche toutes les y secondes et qui, si le booléen en question est à true, lit les données, sinon il se rendort  :)


Message édité par sebx le 16-06-2006 à 15:18:22

---------------
Célibataire & béhémiste de service
Gentil Organisateur des rencontres matbe
JH 27 ans, bon salaire, propriétaire, roulant en berline Allemande cherche femme pour mariage, bébés et + si affinités
n°45082
LostSoul
Vivement TES V
Posté le 16-06-2006 à 15:18:18  profilanswer
 

note si t'espliquais un peu ton truc globalement ce serait mieux


---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°45083
cruciforme
Artiste incompris
Posté le 16-06-2006 à 15:20:54  profilanswer
 

Nan, pas de thread de rafraishissement d'affichage, je préfère que l'objet mise à jour prévienne l'affichage que son état à changé ce qui a pour effet de rafraichir l'affichage.
C'est pour ça que j'aimerais un mécanisme de blocage de la lecture plutôt qu'une boucle qui tourne.
Reste que le temps de mise à jour est rapide en théorie et donc le cas ne devrait jamais se produire mais tant qu'à faire j'essaie de faire un truc propre. J'ai même fait une fabrique d'objet [:totoz]
 
 
Lost> Globalement, j'ai un objet qui dispose d'une fonction update et qui contient une liste d'arrêts avec s'il y a un bus ou pas. La fonction update on s'en serait douté se met à jour les données de la liste. Je  veux simplement utiliser cet objet pour faire une gui mise à jour régulièrement.


Message édité par cruciforme le 16-06-2006 à 15:24:24

---------------
Avec un grand C.. Membre du Club des Nostalgiques d'EUROSPORT| Les recettes de ma copine - RTBF, je t'aime..
n°45084
sebx
boulet cherche canon
Posté le 16-06-2006 à 15:23:06  profilanswer
 

bah un event alors  :spamafote:


---------------
Célibataire & béhémiste de service
Gentil Organisateur des rencontres matbe
JH 27 ans, bon salaire, propriétaire, roulant en berline Allemande cherche femme pour mariage, bébés et + si affinités
n°45085
cruciforme
Artiste incompris
Posté le 16-06-2006 à 15:23:50  profilanswer
 

:??:. Je reviens, je dois chercher un colis :o


---------------
Avec un grand C.. Membre du Club des Nostalgiques d'EUROSPORT| Les recettes de ma copine - RTBF, je t'aime..
n°45086
LostSoul
Vivement TES V
Posté le 16-06-2006 à 15:24:34  profilanswer
 

Y'a encore SendMessage() et PostMessage() dans le C# ?


---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°45087
cruciforme
Artiste incompris
Posté le 16-06-2006 à 15:26:01  profilanswer
 

Je sais pas, j'ai lu un truc 10 minutes sur les keywords, c'est tout :D


---------------
Avec un grand C.. Membre du Club des Nostalgiques d'EUROSPORT| Les recettes de ma copine - RTBF, je t'aime..
n°45088
sebx
boulet cherche canon
Posté le 16-06-2006 à 15:27:47  profilanswer
 

http://msdn2.microsoft.com/fr-fr/library/awbftdfh.aspx


---------------
Célibataire & béhémiste de service
Gentil Organisateur des rencontres matbe
JH 27 ans, bon salaire, propriétaire, roulant en berline Allemande cherche femme pour mariage, bébés et + si affinités
n°45089
LostSoul
Vivement TES V
Posté le 16-06-2006 à 15:28:47  profilanswer
 

rha les handlers c'est vraiment coder java-staïle ca ...


---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°45090
sebx
boulet cherche canon
Posté le 16-06-2006 à 15:30:12  profilanswer
 

bah c# / java c'est bonnet blanc et blanc bonnet hein  :D


---------------
Célibataire & béhémiste de service
Gentil Organisateur des rencontres matbe
JH 27 ans, bon salaire, propriétaire, roulant en berline Allemande cherche femme pour mariage, bébés et + si affinités
n°45091
Ashe
reenignE esreveR
Posté le 16-06-2006 à 16:09:39  profilanswer
 

Sections critiques

Code :
  1. lock (variable)
  2. {
  3.    // ici la section critique
  4. }


ou
System.Threading.Monitor.Enter( variable );
try
{
    // section critique
}
finally
{
    System.Threading.Monitor.Exit( variable );
}
[/cpp]
(le premier genere le 2eme, techniquement, mais bon)
 
Un exemple de worker thread:
http://www.codeproject.com/csharp/workerthread.asp
(surtout le ManualResetEvent et le Wait qui sont utiles :p)


---------------
Globe trotter/SDF - Reims, France
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°45092
Ashe
reenignE esreveR
Posté le 16-06-2006 à 16:09:49  profilanswer
 

Tiens, les cpp marchent plus :D


---------------
Globe trotter/SDF - Reims, France
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°45100
cruciforme
Artiste incompris
Posté le 16-06-2006 à 17:43:22  profilanswer
 

Bon ben merci, ça devrait aller. Pour les events je crois que c'est trop proche de winforms donc ça ne va pas faire mon affaire :D.


---------------
Avec un grand C.. Membre du Club des Nostalgiques d'EUROSPORT| Les recettes de ma copine - RTBF, je t'aime..
n°45166
cruciforme
Artiste incompris
Posté le 20-06-2006 à 00:12:34  profilanswer
 

C'est chiant, on ne peut pas déclarer une méthode abstraite comme étant privée. C'est vrai que logiquement pour avoir du polymorphisme faudrait une ref vers la fonction mais avec un this, ça ne pourrait pas marcher :??:
 
Edit: logique, faut au moins la déclarer protected sinon ça n'a aucun sens :D (Il se fait tard :o)


Message édité par cruciforme le 20-06-2006 à 00:15:41

---------------
Avec un grand C.. Membre du Club des Nostalgiques d'EUROSPORT| Les recettes de ma copine - RTBF, je t'aime..
n°45169
Ashe
reenignE esreveR
Posté le 20-06-2006 à 08:23:32  profilanswer
 

Techniquement ca pourrait servir avec de l'heritage prive, mais bon le C# c'est rempli de limitations, t'avais qu'a le faire en C++/CLI :D


---------------
Globe trotter/SDF - Reims, France
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°45170
LostSoul
Vivement TES V
Posté le 20-06-2006 à 08:44:53  profilanswer
 

C# est limité à la sauce java  [:ashe:3]


---------------
(pas de signature ce jour)
[ www.in-wonderland.net | www.start64.com | www.majorgeeks.com ]
n°45171
cruciforme
Artiste incompris
Posté le 20-06-2006 à 11:04:07  profilanswer
 

Ashe a écrit :

Techniquement ca pourrait servir avec de l'heritage prive, mais bon le C# c'est rempli de limitations, t'avais qu'a le faire en C++/CLI :D


ah ouais mais dans mon cas il ne me fallait pas d'héritage privé et donc un protected marche bien :D


Aller à :
Ajouter une réponse