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 :

Exécuter une fonction chaque Seconde


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Points : 90
    Points
    90
    Par défaut Exécuter une fonction chaque Seconde
    salut tout le monde, j'ai besoin de votre aide en 2 questions :

    1- je travaille sous .NET 2003, je dois exécuter cetains méthode chauqe seconde , j'ai implémenter un petit compteur comme exemple mais le textbox n'affiche rien.
    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
     
    public partial class _Default : System.Web.UI.Page 
    {
        System.Timers.Timer instance = new System.Timers.Timer(1000);
        int i = 1;
        protected void Page_Load(object sender, EventArgs e)
        {
            instance.Elapsed += new System.Timers.ElapsedEventHandler(compteur);
            instance.Start();
        }
     
        public void compteur(object sender,System.Timers.ElapsedEventArgs ev)
        {
            TextBox1.Text = Convert.ToString(i);
            i += 1;
        }
    }
    2- dans l'application je dois aviser l'administrateur qu'un utilisateur vient d'être connecter, y a t elle possibilité d'afficher un message comme celui de msn
    ( xxx vient de se connecter )

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Il ne passe quoi toute les secondes ? Rien ?

    Pour le 2, tu peux passer par un net send à l'administrateur

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Je sais pas si tu l'as réalisé, mais là le code d'incrémentation du compteur s'exécute côté serveur... et la textbox ne sera pas mise à jour tant qu'il n'y aura pas eu un postback. Il faudrait donc recharger la page toutes les secondes, pas super pratique pour l'utilisateur !
    Donc si tu veux mettre un compteur, il faut le faire en Javascript pour que ça s'exécute côté client. Si tu as besoin de récupérer la valeur du compteur sur le serveur, tu peux la stocker dans un champ caché qui sera envoyé avec le reste du formulaire.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Je sais pas si tu l'as réalisé, mais là le code d'incrémentation du compteur s'exécute côté serveur... et la textbox ne sera pas mise à jour tant qu'il n'y aura pas eu un postback.
    Bien vu: j'avais pas vu que c'est de l'ASP.NET

  5. #5
    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 Thomas Lebrun Voir le message
    Il ne passe quoi toute les secondes ? Rien ?

    Pour le 2, tu peux passer par un net send à l'administrateur
    Nop tu n'as pas compris son intention qui est mal formulé.
    Mais en tant que grand habitué de MSN j'ai compris ce qu'il voulait faire : de la présence !!!!
    Bon courage, ce n'est pas simple.
    En général cela dépend du protocole que tu utilises pour la communication entres les utilisateurs.

    Mais bon le fonctionnement général est le suivant :

    1) Lors que le client se connecte sur le serveur, il s'enregistre et va signaler son statut de présence (en ligne, occupé, absent, ...)

    2) Il va aussi signaler quels sont ses contacts, ceux dont il souhaite être avertis de la statut de présence.

    3) Les autres connectés font pareil.

    4) Donc lorsqu'un gars se connecte, le serveur doit dire à tout ce qui l'on en contacte : Le gars est connecté voici son statut.

    Mais on en s'arrête pas là, n'importe quel utilisateur doit mettre à jour son statut de présence tous les x temps.
    Alors le serveur, s'il observe un changement de statut, il doit avertir toutes les personnes concernées de son changement de statut !!!

    Bon c'est pas bien compliqué comme fonctionnement, mais tu t'imagines tout de suite qu'il y a augmentation du trafic réseau à cause de la présence.
    En général, les appllications sur lequelles ont rajoutes la fonctionnalité présence, elles font crasher leurs serveurs
    Et puis faut bien respecter les normes du protocole de communication si on ne veut pas se retrouver avec plein de merde.

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Points : 90
    Points
    90
    Par défaut Bravo ced600
    Bravo ced600
    c'est que je cherche :
    1- quand un utilisateur se connecte il change un attribut dans la table user vers "connected" lorsqu'il abondon la session le statut devient "disconencted" , moi je charge la liste des utilisateur dans une liste , et je veux que l'administrateur détecte en temps réel qui vient de se connecter voici le code excate :
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    namespace WebApplication2
    {
    	/// <summary>
    	/// Summary description for UserConnected.
    	/// </summary>
    	public class UserConnected : System.Web.UI.Page
    	{
    		protected System.Web.UI.WebControls.ListBox connectedUser;
    		System.Timers.Timer instance = new System.Timers.Timer(1000);
     
    		private void Page_Load(object sender, System.EventArgs e)
    		{				
    			instance.Elapsed += new System.Timers.ElapsedEventHandler(listconnected);
    			instance.Start();
    		}
     
    		public void listconnected(object sender,System.Timers.ElapsedEventArgs ev)
    		{
    			string SconnectionString="Server=127.0.0.1;Uid=root;Pwd=www.com;Database=padb";
    			MySql.Data.MySqlClient.MySqlConnection cnx=new MySql.Data.MySqlClient.MySqlConnection(SconnectionString);
    			MySqlCommand userconnectd=new MySqlCommand("select nom from user where connected='"+1+"'");
    			userconnectd.Connection=cnx;
    			MySqlDataReader DRConnectedUser;
    			try
    			{
    				cnx.Open();
    				DRConnectedUser=userconnectd.ExecuteReader();
    				while(DRConnectedUser.Read()==true)
    				{
    					connectedUser.Items.Add(DRConnectedUser[0].ToString());
    				}
    			}
    			catch(MySqlException ex)
    			{
    				Response.Write(ex.ToString());
    			}
    		}
     
     
     
    		#region Web Form Designer generated code
    		override protected void OnInit(EventArgs e)
    		{
    			//
    			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
    			//
    			InitializeComponent();
    			base.OnInit(e);
    		}
     
    		/// <summary>
    		/// Required method for Designer support - do not modify
    		/// the contents of this method with the code editor.
    		/// </summary>
    		private void InitializeComponent()
    		{    
    			this.Load += new System.EventHandler(this.Page_Load);
     
    		}
    		#endregion
    	}
    }

  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
    Bah si tu as le code, qu'elle est le problème ?

  8. #8
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Points : 90
    Points
    90
    Par défaut
    le code est juste mais le moment ou je me connecte comme étant administrateur la page prend beaucoup de temps pour se charger et en fin rien ne s'affiche.

    ce que je veux c'est chaque seconde je réexecute le code qui charge la liste qui contient les utilisateurs connectés.

  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
    Ajax peut-etre pour gerer ce rafraichissement au niveau client no ?

    The Monz, Toulouse

  10. #10
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Points : 90
    Points
    90
    Par défaut
    j'ai jamais travailler en JAX sous Framwork 1.1, moi je travaille souvent en 2.0 mais le nouveau job exige ça.

    si tu peux me fournir des liens de AJAX avec fw 1.1, j'ai checcher mais j'ai pas trouver c'est pourquoi j'ai opter pour le Timer

  11. #11
    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

    désolé, j'ai pas de lien

    J'ai lancé le terme Ajax, parce que le fait de rafraichir une partie de ta page correspond à des choses qu'on peut faire en ajax... maintenant, je ne suis pas sur que 1.1 on puisse s'appuyer sur Ajax

    Apres, en dehors du timer, ya pas bcp d'autres solutions

    Cela dit, ton timer, il va scruter toutes les X secondes si quelques choses à bouger et je suppose, qu'il ne fera des actions que si il y a des changements ?

    The Monz, Toulouse

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    je ne suis pas sur que 1.1 on puisse s'appuyer sur Ajax
    Ben tu peux peut-être pas t'appuyer sur la lib ASP.NET AJAX, mais rien n'empêche de le faire "à l'ancienne", en codant les appels au serveur en javascript...

  13. #13
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    J'ai lancé le terme Ajax, parce que le fait de rafraichir une partie de ta page correspond à des choses qu'on peut faire en ajax... maintenant, je ne suis pas sur que 1.1 on puisse s'appuyer sur Ajax
    Euh ... les appels "hors bande" ne datent pas de l'"invention" de AJAX (un nom tout neuf pour une techno connue depuis un certain temps), et ici ça semble répondre à son besoin.

  14. #14
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par killer69 Voir le message
    Merci tout le monde

    je viens de résoudre le problème du rafraichissement, je viens de trouver un framework gratuit qui fait l'affaire c'est " MagicAJAX", j'ai utiliser le script suivant :
    - MagicAjax.AjaxCallHelper.SetAjaxCallTimerInterval(1000);

    2- si y a une autre alternative pour aviser l'administrateur qu'un user est connecter à part netsend ( un truc comme msn)

    merci encore



    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
     
    private void Page_Load(object sender, System.EventArgs e)
    		{	
    			// Ajax refresh every 1 second
    			listconnected();
    			MagicAjax.AjaxCallHelper.SetAjaxCallTimerInterval(1000);	
    		}
     
    		public void listconnected()
    		{
    			connectedUser.Items.Clear();
    			string SconnectionString="Server=127.0.0.1;Uid=root;Pwd=www.com;Database=padb";
    			MySql.Data.MySqlClient.MySqlConnection cnx=new MySql.Data.MySqlClient.MySqlConnection(SconnectionString);
    			MySqlCommand userconnectd=new MySqlCommand("select nom from user where connected='"+1+"'");
    			userconnectd.Connection=cnx;
    			MySqlDataReader DRConnectedUser;
    			try
    			{
    				cnx.Open();
    				DRConnectedUser=userconnectd.ExecuteReader();
    				while(DRConnectedUser.Read()==true)
    				{
    					connectedUser.Items.Add(DRConnectedUser[0].ToString());
    				}
    			}
    			catch(MySqlException ex)
    			{
    				Response.Write(ex.ToString());
    			}
    		}

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    2- si y a une autre alternative pour aviser l'administrateur qu'un user est connecter à part netsend ( un truc comme msn)
    Ca doit être faisable avec MSN... il existe une librairie .NET pour se connecter à MSN et envoyer des messages:
    http://www.xihsolutions.net/dotmsn/

  16. #16
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Points : 90
    Points
    90
    Par défaut
    Merci tomlev

    jer vais me pencher sur la ressource qui tu m'as donné, une fois fait je vous avise tous


  17. #17
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Points : 90
    Points
    90
    Par défaut
    Merci Tomlev

    je suis entrain de travailler sur la ressource que tu m'a comminuquer


  18. #18
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Points : 90
    Points
    90
    Par défaut
    bonjour tt le monde

    je pense que je vais me contenter de net send mais si l'utilisateur désactive la réception des message (souvent ce service est désactivé) alors y a til moyen à ce que je change les options de regedit.

  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
    Citation Envoyé par killer69 Voir le message
    bonjour tt le monde

    je pense que je vais me contenter de net send mais si l'utilisateur désactive la réception des message (souvent ce service est désactivé) alors y a til moyen à ce que je change les options de regedit.
    Tu peux vérifier si le service est désactivé et le réactivé.

Discussions similaires

  1. exécuter une fonction tout les xx secondes
    Par med.doc dans le forum C++
    Réponses: 26
    Dernier message: 26/09/2013, 23h10
  2. Exécuter une fonction après quelques secondes
    Par Akim13 dans le forum Langage
    Réponses: 13
    Dernier message: 12/03/2013, 17h56
  3. Exécution d'une fonction à chaque déclenchement d'un événement
    Par Invité dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2011, 21h25
  4. Exécuter une fonction chaque seconde
    Par zemzoum89 dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 04/11/2010, 17h32
  5. Exécuter une fonction paramétrée apres 5 secondes
    Par sosophie dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/08/2007, 15h49

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