IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Faire une tâche de fond dans un IHM


Sujet :

C#

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut Faire une tâche de fond dans un IHM
    Bonjour

    Je suis débutant en .NET.
    Je compte commencer bientôt un programme avec ".NET" sous VC 2008 (Express).

    Je pense le faire en C++, mais je n'ai pas trouvé de forum C++ dans la rubrique ".NET", alors je poste ma question ici. Il ne devrait pas y avoir de différence sur le fond.

    L'IHM de mon programme doit mettre à jour l'affichage d'une image vidéo en attendant les ordres et les clics de l'utilisateur.
    Je vois la possibilité de faire un thread, mais ça ne m'enthousiasme pas du tout à cause des difficultés qui ne manqueront pas de venir pour la synchronisation lors des actions de l'utilisateur.

    Alors je me demandais si il n'y avait pas la possibilité de se passer d'un thread????
    Par exemple s'il y a une fonction virtuelle appelée régulièrement par l'application principale... ou autre chose...

    Merci d'avance

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    Si tu veux vraiment te passer d'un thread (chose que je ne te recommande pas du tout dans ce cas!) , tu peux le faire sans problème. Au risque de bloquer ton application bien sur !

    Mais c est une mauvaise conception que celle là.
    Professionellement un IHM pareil est inacceptable ( en tout cas dans tous les domaines ou la sécurité/fiabilité demandé est differente de nulle)

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    J'essaye juste de me simplifier la vie.
    Les threads sont toujours bordéliques à synchroniser (mutex, etc...)

    Tu dis que c'est faisable sans problème, comment donc??????
    Je ne compte pas bloquer l'application, bien sûr. (par exemple en gardant la main lors le l'initialisation)

    J'espère une sorte de fonction virtuelle appelée régulièrement par l'IHM.
    Si une telle fonction existe, je la surchargerais et la quitterais dès que le rafraichissement vidéo serait accompli.
    L'avantage serait que je pourrai être sûr qu'il n'y aura aucun conflit de threads (je n'aurai que le thread principal) lorsque l'utilisateur exécutera une action.

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Tu dis que c'est faisable sans problème, comment donc??????
    Je ne compte pas bloquer l'application, bien sûr. (par exemple en gardant la main lors le l'initialisation)
    peux le faire sans problème. Au risque de bloquer ton application bien sur !

    Je pense le faire en C++, mais je n'ai pas trouvé de forum C++ dans la rubrique ".NET"
    Du c++.Net c'est du C#.
    On dit souvent que C# est comme Java, mais c'est faux, c'est juste que c'est deux langages ce sont inspirés du C++.
    Après comme tu es dans du code managé pas de malloc, pas de pointeur, tout est géré par le framework.
    En fait faire du .net c'est apprendre à utiliser le framework, après une syntaxe ou une autre, on s'en fou un peu, sauf que C# sur le CV rend fou de joie les recruteurs, bien plus que VB.net par exemple.

  5. #5
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    Citation Envoyé par Charlemagne Voir le message
    Les threads sont toujours bordéliques à synchroniser (mutex, etc...)
    Avec le baggage théorique relatif, tu remarquera que c'est pas bordélique la programmation concurente. C'est juste une autre manière de penser.

    Note qu'en C#, dans une utilisation standard, la synchronisation peut etre réalisé avec Lock et Unlock. Le méchanisme se base sur les moniteurs, mais tout est encapsulé et tu n'as pas à faire la gestion toi meme.

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    Mais j'aimerais voir si y une alternative au thread.
    Faire un thread à tout prix n'est pas forcément la meilleur solution.

    Personne ne voit d'alternative?
    Citation Envoyé par Zaan
    Si tu veux vraiment te passer d'un thread (chose que je ne te recommande pas du tout dans ce cas!) , tu peux le faire sans problème
    Comment donc??? c'est ma question depuis le début.
    J'aviserai des risques plus tard...

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par Charlemagne Voir le message
    Mais j'aimerais voir si y une alternative au thread.
    Faire un thread à tout prix n'est pas forcément la meilleur solution.

    Personne ne voit d'alternative?

    Comment donc??? c'est ma question depuis le début.
    J'aviserai des risques plus tard...
    Je pensais qu'en mettant les deux citations l'une ne dessous de l'autre, tu allais comprendre ce qu'il a voulu dire, mais non apprement.
    J'explique ce que j'ai compris :
    L'autre moyen c'est de tout faire dans le thread principale.
    Et du coup ton ihm à de grande chance de freezer.

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Je pensais qu'en mettant les deux citations l'une ne dessous de l'autre, tu allais comprendre ce qu'il a voulu dire, mais non apprement.
    J'explique ce que j'ai compris :
    L'autre moyen c'est de tout faire dans le thread principale.
    Et du coup ton ihm à de grande chance de freezer.
    et moi j'avais répondu ça
    Je ne compte pas bloquer l'application, bien sûr. (par exemple en gardant la main lors le l'initialisation)

    J'espère une sorte de fonction virtuelle appelée régulièrement par l'IHM.
    Si une telle fonction existe, je la surchargerais et la quitterais dès que le rafraichissement vidéo serait accompli.
    L'avantage serait que je pourrai être sûr qu'il n'y aura aucun conflit de threads (je n'aurai que le thread principal) lorsque l'utilisateur exécutera une action.
    Une fonction virtuelle dans le genre, ou un mécanisme similaire existe t-il?

  9. #9
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    salut

    a defaut de thread, tu peux toujours faire un timer

    The Monz, Toulouse

  10. #10
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    a defaut de thread, tu peux toujours faire un timer
    Ce qui bloquera de toute façon l'application.

    Charlemagne : Pourquoi t'obstiner à éviter les threads ? c'est la solution la plus propre et la plus efficace. Là, tu es en train de nous demander de te trouver une solution sale parce que tu n'as pas envie d'utiliser des threads. Il ne faut pas espérer une réponse pertinente alors que ta question ne l'est pas.

    Tu peux utiliser par exemple un backgroundworker qui te masque une partie de la soit-disant complexité des threads.

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Charlemagne : Pourquoi t'obstiner à éviter les threads ?
    Parce que j'ai vu (et je vois) des programmes avec des threads, conçus par des informaticiens soit disant expérimentés. Ces programmes sont bugués jusqu'à la moelle.
    Et si je peux m'éviter des synchronisations fastidieuses, j'aimerais bien le faire.
    Les informaticiens dont je parle auraient mieux fait d'y penser avant de faire des threads à tours de bras.

    Un timer bloquerait effectivement l'application de toute façon.

    Visiblement personne ne connait une fonction virtuelle miracle à surcharger... tant pis...

  12. #12
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par Charlemagne Voir le message
    Visiblement personne ne connait une fonction virtuelle miracle à surcharger... tant pis...
    Le concept de méthode virtuelle n'a absolument rien à voir avec les threads et les problèmes de concurrence. Tu mélanges plusieurs notions. Avant de t'attaquer à ce problème de thread, tu devrais jeter un oeil sur les concept de POO, histoire de repartir sur de bonnes bases.

  13. #13
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Le concept de méthode virtuelle n'a absolument rien à voir avec les threads et les problèmes de concurrence. Tu mélanges plusieurs notions. Avant de t'attaquer à ce problème de thread, tu devrais jeter un oeil sur les concept de POO, histoire de repartir sur de bonnes bases.
    Cela attaque sec

    Mais bon il a raison, tu ne sembles pas avoir de bonne base.
    Je te conseil aussi de lire de la doc sur les threads en C# car apperement tu ne sais pas trop ce que c'est, on a l'impression que pour toi le multithreading c'est une piece noir avec une porte sur laquelle on peut lire : Taboo.

    Et si tu montes en compétence sur ces points, tu pourra faire du multithreading sans trop de problème, correctement, et tu obtiendras un programme non bugues.

    Une méthode miracle : On n'a pas, tu peux toujours t'agenouillé et prier, peut être qu'il te donnera l'inspiration

  14. #14
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Juste pour préciser, le ton que j'employais n'était pas agressif, même si certains ont pu avoir cette impression.
    Je tenais simplement à mettre quelques idées au clair.

  15. #15
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    Je me casse...
    Certains n'essayent même pas de comprendre ma philosophie. Si vous ne voyez pas d'alternative à un thread: dites le.

    Au lieu de ça on prétend que je n'ai les bases, et que je confonds threads et fonctions virtuelles, etc.
    Je débute en ".NET" mais pas en C++.
    Vous devez faire partie de ce genre de programmeurs que j'évoque plus haut.

  16. #16
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    mais LOL !!!

    Citation Envoyé par Charlemagne Voir le message
    Si vous ne voyez pas d'alternative à un thread: dites le.
    tu as toutes les info : il existe des alternatives sales precitées ci dessus !

    Citation Envoyé par Charlemagne Voir le message
    Au lieu de ça on prétend que je n'ai les bases, et que je confonds threads et fonctions virtuelles, etc.
    c'est bien le cas vu tes réponses !

    Citation Envoyé par Charlemagne Voir le message
    Je débute en ".NET" mais pas en C++.
    les concepte POO et prog concurrente restent les memes pourtant !

    Citation Envoyé par Charlemagne Voir le message
    Je me casse...
    Certains n'essayent même pas de comprendre ma philosophie.
    Vous devez faire partie de ce genre de programmeurs que j'évoque plus haut.
    le mieux est de fermer ce post et d'ouvrir tes bouquins !

  17. #17
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    theMonz31 : a defaut de thread, tu peux toujours faire un timer

    Ce qui bloquera de toute façon l'application.
    Pas forcément, si son traitement lors de l'appel du timer est assez rapide.

    De plus, s'il veut modifier des propriétés de la fenêtre (pour afficher un texte ou une image), il devra de toute façon le faire dans le thread dans lequel la fenêtre a été créé (via invocation si nécessaire).

    Dans son cas, le thread n'est pas forcément la solution. Il faudrait avoir plus de précision sur les traitements qu'il veut effectuer pour déterminer la meilleure solution

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Points : 627
    Points
    627
    Par défaut
    Du calme, messieurs ! =)

    Pour repondre à l'OP, le threading sous C# est plus simple à mettre à place que sous C++, (entre le statement lock, les type delegué etc, ca peut se faire assez facilement). Si neanmoins, tu veux te masquer la difficulté, et si le design est adapté, tu peux tout à fait passer par un timer (un timer est par essence threadé, ca ne bloquera pas l'appellant).

    Mais de toutes facons, pour un traitement lourd avec un gui, tu ne pourras pas eviter l'utilisation d'un ou de threads qu'elle soit explicite (Thread t = etc ...) ou non (Timer, BeginInvoke etc ...).

    Bon courage.

  19. #19
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Je débute en ".NET" mais pas en C++.
    Justement .Net et c++ non rien à voir en dehors de la syntaxe.
    Demande au développeur en vb6, ils se sont fait avoir en passant au vb.net

    Le .net c'est apprendre à utiliser le framework.

    L'architecture d'un logiciel en POO n'a jamais était dépendant d'un langage lui, juste dans la dernière étape de conception où tu dois potentiellement l'archi de certains composant pour prendre en compte les spécificités du langage.

Discussions similaires

  1. Modéliser une tâche de fond dans un UC
    Par rdtech dans le forum Cas d'utilisation
    Réponses: 4
    Dernier message: 09/11/2014, 15h02
  2. Réponses: 6
    Dernier message: 21/09/2006, 17h33
  3. Réponses: 5
    Dernier message: 27/09/2005, 09h18
  4. Etirer une image de fond dans une cellule
    Par dreamanoir dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/07/2005, 14h39
  5. Réponses: 4
    Dernier message: 03/05/2005, 09h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo