Pourquoi mon timer ne s'execute pas ???? [Résolu]

lpupi 23 Messages postés jeudi 31 mars 2011Date d'inscription 11 mai 2012 Dernière intervention - 21 févr. 2012 à 16:07 - Dernière réponse : Whismeril 12117 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 octobre 2018 Dernière intervention
- 24 févr. 2012 à 16:12
Une personne pourrait m'aider à comprendre pourquoi mon Timer ne se lance pas ?

Il est appelé par l'event Authentication_LoggedIn. Est-ce la cause ? dans ce cas comment executer Timer en étant sûr que la personne soit loggée ??

Merci d'avance pour votre aide.



private void Authentication_LoggedIn(object sender, AuthenticationEventArgs e)
{

if (WebContext.Current.User.IsAuthenticated)
{
Event.Visibility = Visibility.Visible;
Event.Children[1].Visibility = System.Windows.Visibility.Collapsed;
Event.Children[1].Visibility = System.Windows.Visibility.Visible;
tabMain2.Visibility = Visibility.Visible;
tabMain3.Visibility = Visibility.Visible;
tabMain4.Visibility = Visibility.Visible;
tabMain5.Visibility = Visibility.Visible;
tabMain6.Visibility = Visibility.Visible;
tabMain4.IsSelected = true;
login = WebContext.Current.User.Name;
PseudoEventContext EventContext = new PseudoEventContext();
Global.duplex.ReceptReceived += new EventHandler<ReceptReceivedEventArgs>(duplex_ReceptReceived);
Global.duplex.EnvoiAsync(1, login, null, null, 0);
timer = new System.Threading.Timer(MStayAlive, null, 0, 3000);
NbConnexions.Visibility = Visibility.Visible;
}
}

public void MStayAlive(object Null)
{
MessageBox.Show("J'envoi 1");
Global.duplex.EnvoiAsync(1, WebContext.Current.User.Name, null, null, 0);
}


Un débutant
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
lpupi 23 Messages postés jeudi 31 mars 2011Date d'inscription 11 mai 2012 Dernière intervention - 24 févr. 2012 à 16:02
3
Merci
J'ai changé de Timer (System.Windows.Threading.DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();)

Et là ça marche !

ça n'explique pas pourquoi l'autre ne marchait pas chez moi mais bon ... je suis au moins débloqué !

Merci Whismeril pour le temps que tu as passé là dessus.

Un débutant

Merci lpupi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de lpupi
lpupi 23 Messages postés jeudi 31 mars 2011Date d'inscription 11 mai 2012 Dernière intervention - 22 févr. 2012 à 09:43
0
Merci
PLEEEEEEEEEEAAAAAAAAAAAAAAAAAAAAAAAAASE HEEEEEEEEEEEEEEEEEEEELP !

Un débutant
Commenter la réponse de lpupi
Whismeril 12117 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 octobre 2018 Dernière intervention - 22 févr. 2012 à 10:29
0
Merci
Bonjour

quand tu postes un code utilise les balises de code, 3eme icône en partant de la droite au-dessus de la zone de saisie du texte.

Ca donne ça:


private void Authentication_LoggedIn(object sender, AuthenticationEventArgs e) 
{ 

if (WebContext.Current.User.IsAuthenticated) 
{ 
Event.Visibility = Visibility.Visible; 
Event.Children[1].Visibility = System.Windows.Visibility.Collapsed; 
Event.Children[1].Visibility = System.Windows.Visibility.Visible; 
tabMain2.Visibility = Visibility.Visible; 
tabMain3.Visibility = Visibility.Visible; 
tabMain4.Visibility = Visibility.Visible; 
tabMain5.Visibility = Visibility.Visible; 
tabMain6.Visibility = Visibility.Visible; 
tabMain4.IsSelected = true; 
login = WebContext.Current.User.Name; 
PseudoEventContext EventContext = new PseudoEventContext(); 
Global.duplex.ReceptReceived += new EventHandler<ReceptReceivedEventArgs>(duplex_ReceptReceived); 
Global.duplex.EnvoiAsync(1, login, null, null, 0); 
timer = new System.Threading.Timer(MStayAlive, null, 0, 3000); 
NbConnexions.Visibility = Visibility.Visible; 
} 
} 

public void MStayAlive(object Null) 
{ 
MessageBox.Show("J'envoi 1"); 
Global.duplex.EnvoiAsync(1, WebContext.Current.User.Name, null, null, 0); 
}


Comme tu ne précises pas d'ou vient ton événement, la seule chose que je peux te conseiller est de mettre un point d'arrêt dès le début de la procédure et de voir comment ça se comporte. Il est possible, par exemple, qu'à l'appel de cet événement
if (WebContext.Current.User.IsAuthenticated) 
soit faux.


Whismeril
Commenter la réponse de Whismeril
MasterShadows 269 Messages postés lundi 1 mars 2004Date d'inscription 19 avril 2012 Dernière intervention - 22 févr. 2012 à 11:19
0
Merci
Salut, il semblerait que tu crée bien un timer :

timer = new System.Threading.Timer(MStayAlive, null, 0, 3000); 


Mais à aucun moment le timer ne démarre. Il faudrait que tu rajoutes cette ligne juste après l'instantiation du timer :

timer.Start();
Commenter la réponse de MasterShadows
Whismeril 12117 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 octobre 2018 Dernière intervention - 22 févr. 2012 à 11:27
0
Merci
C'était ma première idée, mais chez moi dans un bouton ça fonctionne.
Il n'y a pas de .Start() pour ce type de timer.

Par contre je suppose qu'il est déclaré ailleurs dans le projet, pour ma part j'ai déclaré et instancié sur une ligne

            System.Threading.Timer t = new System.Threading.Timer(MStayAlive, null, 0, 1000);




Whismeril
Commenter la réponse de Whismeril
lpupi 23 Messages postés jeudi 31 mars 2011Date d'inscription 11 mai 2012 Dernière intervention - 22 févr. 2012 à 13:54
0
Merci
Merci pour vos réponse. J'ai cependant un petit PB : il refuse la commande timer.Start(); (N'existe pas ...)

Un débutant
Commenter la réponse de lpupi
Whismeril 12117 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 octobre 2018 Dernière intervention - 22 févr. 2012 à 14:41
0
Merci
C'est pour ça que j'ai écrit
Il n'y a pas de .Start() pour ce type de timer.


As tu mis un point d'arrêt au début de ta procédure?
Whismeril
Commenter la réponse de Whismeril
lpupi 23 Messages postés jeudi 31 mars 2011Date d'inscription 11 mai 2012 Dernière intervention - 22 févr. 2012 à 16:07
0
Merci
Oui je passe bien dans le bloc de mon if

En effet timer est déclaré comme variable dans ma classe MainPage.

Un débutant
Commenter la réponse de lpupi
Whismeril 12117 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 octobre 2018 Dernière intervention - 22 févr. 2012 à 16:19
0
Merci
As tu exécuté en mode pas à pas pour voir si tu vas bien jusqu'à la ligne d'initialisation du timer? Et si elle semble au moins s'exécuter?
Si tu as une gestion d'erreurs, il est possible qu'une ligne avant ou celle-ci crée une exception interceptée par ta gestion d'erreurs.

Une autre hypothèse, la portée de la déclaration du timer englobe-t-elle ton événement?


Whismeril
Commenter la réponse de Whismeril
lpupi 23 Messages postés jeudi 31 mars 2011Date d'inscription 11 mai 2012 Dernière intervention - 22 févr. 2012 à 18:53
0
Merci
heu ... là ça commence à se compliquer ... depuis que j'ai mis en place "ma machine de prod", je n'ai plus accès au debugger (A chaque point d'arrêt j'ai : le point d'arrêt ne sera pas atteint pour l'instant. aucun symbole n'a été chargé pour ce document) J'ai dû merder quelque part mais je ne sais pas où

Côté porté de la variable, oui, le timer est déclaré au niveau de la classe. J'ai même essayé de l'initialiser dans le constructeur ....

Question : (Histoire d'être sûr) mon MStayAlive est une simple méthode (Ce qui est mon cas)? Il n'ay a pas à déclarer de délégué ou autres ?

Désolé pour les questions débiles mais je suis un ....

Un débutant ... et à force de cherche j'arrive souvent à me perdre !

En tout cas, merci pour le temps que tu me consacre.
Commenter la réponse de lpupi
lpupi 23 Messages postés jeudi 31 mars 2011Date d'inscription 11 mai 2012 Dernière intervention - 22 févr. 2012 à 19:03
0
Merci
Petite précision (Je ne sais pas si ça a une importance) C'est un projet Silverlight et ça se passe côté client.

Un débutant
Commenter la réponse de lpupi
Whismeril 12117 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 octobre 2018 Dernière intervention - 22 févr. 2012 à 22:21
0
Merci
Ca a probablement de l'importance, car chez moi en winform ton code fonctionne.
Et c'est là aussi ou je vais peut être ne plus pouvoir t'aider, je n'ai jamais fait de sylverlight, ni d'application client serveur.

Pour la déclaration de Stayalive, le cache de la fonction te demande un "System.Threading.TimerCallback" qui semble-t-il est un délégué.
Ceci fonctionne aussi chez moi, et cette fois il y'a le délégué:
            System.Threading.TimerCallback tcb = MStayAlive;
            System.Threading.Timer montTimer = new System.Threading.Timer(tcb, null, 0, 1000);



Whismeril
Commenter la réponse de Whismeril
Whismeril 12117 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 octobre 2018 Dernière intervention - 24 févr. 2012 à 16:12
0
Merci
De rien, au final je n'ai pas pu t'aider....


Whismeril
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.