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 un processus "tache de fond" en moins sale.


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 31
    Points
    31
    Par défaut Faire un processus "tache de fond" en moins sale.
    Bonjour a tous, tout est dans le titre :
    voici un code que je suis en train de tester :

    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
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Diagnostics;
    using System.Net;
    using System.Threading;
    using System.Runtime.InteropServices;
    namespace WindowsFormsApplication1
    {
     
     
        public partial class Form1 : Form
        {
            [DllImport("dnsapi.dll", EntryPoint = "DnsFlushResolverCache")]
            private static extern UInt32 DnsFlushResolverCache();
     
            public static void FlushMyCache() //This can be named whatever name you want and is the function you will call
            {
                UInt32 result = DnsFlushResolverCache();
            }
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                while (true)
                {
                    IPHostEntry hosts;
                    hosts = Dns.GetHostEntry("www.google.fr");
                    FlushMyCache();
                    for (int index = 0; index < hosts.AddressList.Length; index++)
                    {
                        Debug.WriteLine(hosts.AddressList[index]);
                    }
                    Thread.Sleep(1000);
                }
            }
        }
    }
    Comme vous pouvez le voir, je fais mon office dans l'initialisation de la première fenêtre. ça marches, c'est cool.
    Maintenant, existe t il un moyen de faire cela de manière propre ( ne pas faire tourner ma boucle dans l'initialisation )? Je ne suis pas obligé d'utiliser les forms window et le soft DOIT être lancé a la main ( double click ).

    Tartine

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Tu peux utiliser un Timer plutôt qu'une boucle while (true).
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 31
    Points
    31
    Par défaut
    Okay, je vais creer un nouveau processus thread, mais ma fonction d'initialisation de la fenetre va se terminer et ensuite la fenetre va apparaitre ( ce que je veux absolument eviter ) non ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Non pas si tu utilises une winform.
    Ton application ne sera pas fermé tant que ta fenetre sera ouverte.
    Enfin bon je connais pas vraiment le besoin, mais si la form ne sert à rien autant passer par un service windows non? (Avec un bat pour le lancer, un autre pour l'arreter)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 31
    Points
    31
    Par défaut
    Nan, ce que je veux dire :
    Ma fenetre va _Apparaitre_ ce que je veux absolument éviter : c'est pour cela que je fais ce que je fais dans l'initialisation : parce que temps que je suis dans la boucle d'initialisation, je peux faire ce que je veux sans que la fenêtre n'apparaisse.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Est ce que la fenetre est utile?
    Tu n'es pas obligé d'instancier la form, meme avec une application Winform.
    Tout se joue dans le Program.cs, et notamment l'appel de "Application.Run(new Form1());"
    ps: j'ai edité le message précendant en meme temps que tu postes, peut etre n'as tu pas vu mon message sur les services.

  7. #7
    Membre éclairé
    Avatar de Etanne
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 469
    Points : 855
    Points
    855
    Par défaut
    Comme dit micka132, vous pouvez directement mettre votre boucle dans Program.cs

    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
    static class Program
        {
            /// <summary>
            /// Point d'entrée principal de l'application.
            /// </summary>
            //[STAThread] -> ne sert plus à rien si il n'y a pas d'IHM
            static void Main()
            {
                //Application.EnableVisualStyles();
                //Application.SetCompatibleTextRenderingDefault(false);
                //Application.Run(new Form1());
     
                while (true)
                {
                    // Le code ici
                }
            }
        }
    "Phylactère temporaire" = tooltips

    Votre problème a été résolu ? Alors utilisez sur et

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 31
    Points
    31
    Par défaut
    Ça me sembles etre la bonne reponse , merci !

    [Edit]
    il est possible de lancer un service en .bat sans faire aparaitre une fenetre console ?
    [/edit]

    Tartine

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Citation Envoyé par Etanne Voir le message
    Comme dit micka132, vous pouvez directement mettre votre boucle dans Program.cs
    Non je n'ai pas dit excactement ca.
    Il ne pourra pas fermer l'application proprement de cette manière. En fait il faudrait d'avantage d'explication sur le problème.

  10. #10
    Membre éclairé
    Avatar de Etanne
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 469
    Points : 855
    Points
    855
    Par défaut
    Citation Envoyé par micka132 Voir le message
    Non je n'ai pas dit excactement ca .
    Il est midi, les vitamines manquent...

    Citation Envoyé par tartine Voir le message
    il est possible de lancer un service en .bat sans faire aparaitre une fenetre console ?
    C'est possible de passer par un vbs, qui lancera le .bat.. ..mais là devient de la folie

    Expliquez-nous votre besoin réel.. ..vous pouvez faire un service windows et l'installer via un vbs.
    "Phylactère temporaire" = tooltips

    Votre problème a été résolu ? Alors utilisez sur et

  11. #11
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 31
    Points
    31
    Par défaut
    Je dois faire une demo " attention, le gros virus il va bien faire plein de caca sur ton ordinateur , mais grâce a notre super firewall, on va pouvoir le voir faire ce caca et te proteger!".
    tl;dr :
    "emuler" un virus et son comportement sur le reseau

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/04/2011, 21h58
  2. faire tourner un script en tache de fond
    Par suzan_ dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 25/09/2010, 08h38
  3. Faire tourner une GtkDialog en tache de fond
    Par Gamall dans le forum GTK+ avec C & C++
    Réponses: 19
    Dernier message: 15/09/2010, 17h23
  4. Faire tourner une Application en Taches de fond
    Par ArkAng3 dans le forum MFC
    Réponses: 3
    Dernier message: 26/08/2005, 14h06
  5. [Question] serveur en tache de fond
    Par Nicaisse dans le forum Réseau
    Réponses: 11
    Dernier message: 14/08/2003, 10h47

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