Bonjour,
Je travaille sur l'élaboration d'un site internet dans les languages ASP.NET et VB.NET.
Toutefois, je ne comprend pas bien comment FAIRE FONCTIONNER le Timer. Je pense néanmoins avoir compris comment ce dernier est censé fonctionner : On fixe un intervalle, on l'active, nos instructions, puis on le désactive !
Toutefois, tout cela ne marche pas aussi simplement que ça pour ma part. En effet, pour exemple, je parviens à lancer un timer, mais pas à le stopper, ou alors changer son interval. C'est à dire, je ne parviens qu'à faire l'initalisation et aucune ré-affectation, ce qui n'est pas très pratique, car une fois le timer lancé, ce dernier ne s'arrête plus ou ne veut pas changer d'intervalle..
Je vais vous donné un bout de code où mon problème est en action, sachez toutefois que j'ai essayer beaucoup d'autres combinaisons (qui ne marchent pas non plus xD) :
J'explique mon code, où du moins, ce que je veux (puisque mon code ne fait pas ça
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 Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load If IsPostBack Then If (/* Connexion à la BDD */) Then Label2.Text = ": Tentative de connexion à la BDD" Else Timer1.Interval = 30000 Timer1.Enabled = True Label2.Text = ": Erreur lors de la connexion à la base de données" End If Else Timer1.Interval = 1000 Timer1.Enabled = True End If End Sub) :
Il charge la page pour la première fois, isPostBack est faux, donc on initialise le Timer à un petit intervalle, et on le démarre. Ainsi, au bout de 1 seconde, le Page_Load est relancé mais avec isPostBack à vrai ! On tente de se connecter à la BDD, si cela marche, alors tant mieux, si non, on fixe un intervalle plus grand (30 secondes) et on retente de se connecter grâce au rafraichissement de la page dût au timer.
Cependant, ceci ne conçerne que la théorie, car dans la pratique ...
Mais le problème du Timer ne s'arrête pas là, pour être plus précis, quand je suis en mode débogage avec un point d'arrêt, j'appuis sur F11 (MVWD2010) pour avancer pas à pas (j'avance instruction par instruction) jusqu'au moment où je tombe sur une propriété de Timer (dans l'exemple, il s'agit de interval). A partir de ce moment là, le débogeur a complètement perdu la notion du mot "linéaire" ! "Il lit une même instruction 3 fois, avance (enfin) à l'instruction d'après, reste 2 fois sur celle-ci, puis retourne 3 instructions précédentes, pui avance d'une instruction, encore d'une, puis retourne 1 instruction précédentes ..."
J'éspère m'être bien exprimé et que je n'ai pas été trop long ^^.
Pour satisfaire votre curiosité, l'objectif de ce code est donc (pour ceux qui ne l'aurais pas remarqué :p) d'afficher un message d'attente (déclaré dans l'aspx tout comme le timer et le scriptmanager et initialisé dans l'asp contrairement au timer) puis de nous dire si la connection a reussi ou échoué, si tel est le cas, on retente l'opération 30 secondes plus tard.
En VB.NET, il est impossible d'executer une fonction après rendu (Init, Load, PreRender ... et j'en passe), j'ai donc dût trouver cette technique du Timer. Mais cette méthode n'étant pas très performante, je me permettrais (encore) de demander (aux plus expérimentés) si quelqu'un connaît l'évènement du Timer qui rappelle Page_Load et tout le cycle de vie d'asp ..
Toutefois, si vous savez comment utilisé le Timer, je suis preneur ^^.
Merci de m'avoir lu (c'est déjà un bel effort :p) et de vos éventuelles réponses.
Partager