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

Développement Windows Discussion :

Problème timer et gestion de fenêtres


Sujet :

Développement Windows

  1. #1
    Futur Membre du Club
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Problème timer et gestion de fenêtres
    Bonjour à tous,

    je viens vers vous pour m'aider à résoudre un petit problème .
    En effet pour faire simple j'ai une application qui lance une fenêtre , lors d'un click sur cette fenêtre elle se ferme, laisse apparaître fenêtre2 et lance un thread qui compte 3 secondes. Si au bout de 3 secondes aucune action n'est réaliser sur fenêtre2 alors le thread lance un évent qui doit normalement ré afficher la première fenêtre.

    le code suivant :
    mon timer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    public class Timer 
        {
     
            private int _decompte;
            public delegate void screenSaverTime();
     
            public event screenSaverTime OnScreenSaverTime;
     
     
            public Timer(int tempsVeille)
            {
                this.Decompte = tempsVeille;
            }
     
     
            public int Decompte
            {
                get { return _decompte; }
                set 
                {                
                    _decompte = value;
     
                }
            }
     
           public  void start()
            {            
                while (this.Decompte>0)
                {
                    Thread.Sleep(1000);                
                    this.Decompte--;
                }
     
                    if (OnScreenSaverTime != null)
                    {
                        OnScreenSaverTime();
                    }
     
            }
     
     
        }
    maintenant le code de mon applis principale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    public class AcceuilViewModel 
        {
     
     
            private Veille veille;
     
            public Veille Veille
            {
                get { return veille; }
     
                set { veille = value; }
            }
     
     
            private Timer chronoVeille;       
            private Thread timerThread;
     
     
     
     
            public AcceuilViewModel()
            {
     
                this.Veille = new Veille();
                this.Veille.Show();
                this.chronoVeille = new Timer(2);
                this.timerThread = new Thread(this.chronoVeille.start);
                this.chronoVeille.OnScreenSaverTime += new Timer.screenSaverTime(chronoVeille_OnScreenSaverTime);
                this.Veille.MouseDown += new System.Windows.Input.MouseButtonEventHandler(veille_MouseDown);
                this.timerThread.SetApartmentState(ApartmentState.STA);                                    
            }
     
            void veille_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
            {
                this.Veille.Close();
                this.timerThread.Start();          
            }
     
     
            private void chronoVeille_OnScreenSaverTime()
            {
     
                this.Veille.Show();                        
            }
    C'est au moment où je rentre dans la fonction chronoVeille_OnScreenSaverTime() et que je veux faire un show() sur ma fenêtre de veille que l'on me signifie que le thread apellant n'est pas propriétaire .

    Quelqu'un a t'il une idée sur la manière dont je pourrai contourner ce problème ?
    ps : le type veille est en fait un dérivé de Surfacewindow

    en vous remerciant par avance

  2. #2
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 570
    Points
    3 570
    Par défaut
    Si tu mets bien la propriété SynchronizedObject du timer sur la form utilisée, il va bien se mettre sur le thread ui de la form

  3. #3
    Futur Membre du Club
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Mon timer n'est pas de type process autrement dit je n'ai donc pas accès à cette propriété

Discussions similaires

  1. Problème de gestion des fenêtres
    Par oligig dans le forum Windows 7
    Réponses: 6
    Dernier message: 23/02/2010, 14h23
  2. Problème avec la gestion des événements
    Par CynO dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/10/2005, 11h07
  3. Réponses: 2
    Dernier message: 11/05/2005, 14h23
  4. problème de gestion de fenêtre
    Par clemsouz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/11/2004, 15h35
  5. [Tcl/Tk] Gestion de fenêtre
    Par HRS dans le forum Tcl/Tk
    Réponses: 2
    Dernier message: 28/08/2004, 22h27

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