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 :

Démarrage d'un service windows qui échoue


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut Démarrage d'un service windows qui échoue
    Bonsoir tout le monde,
    Je suis débutante en C# et je suis confrontée à un souci qui, je l'espère, n'est pas de taille !!
    En fait je dois créer un service Windows qui doit bloquer des processus (des applications en gros).

    Pour ça, j'ai déjà un code en vb.net, qui fonctionne. Ce code est constitué d'une BDD Access qui contient une table avec un identifiant et un champ contenant le nom du processus, une DLL et le service Windows.

    J'ai réussi à générer la dll et le service Windows. Le seul hic est que le service ne veut pas démarrer ! Et je ne sais pas d'où vient le souci, mais alors vraiment pas du tout, et je suis sur ce problème depuis ce matin, 8h30...
    Je vous expose mes fichiers.cs :
    Idata et CLdata, les fichiers de ma dll
    Idata.cs, mon interface
    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace LIB_data
    {
        //Création de l'interface
        public interface Idata
        {
            /*string IfileTYPE
            {
                get;
            }*/
            string IfileDB
            {
                get;
            }
            System.Data.DataSet getExE();
        }
    }
    CLdata, ma classe
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.IO;
    using System.Data.OleDb;
     
    namespace LIB_data
    {
        public class CLdata : Idata
        {
            #region Private Members
                private System.IO.StreamReader oSR;
                private IDbConnection oCNX;
                private IDbCommand oCMD;
                private IDbDataAdapter oDA;
                private System.Data.DataSet oDS;
                private string R_sql;
                //private string DBTYPE;
                //private string SQLSERVER = "MSSQLSERVER";
                //private string MSACCESS = "MSACCESS";
            #endregion
     
            #region Interface CLdata
            public CLdata()
            {
                this.R_sql = "SELECT * FROM TB_INTERDIT";
                /*this.oSR = new System.IO.StreamReader(((Idata)this).IfileTYPE);
                this.DBTYPE = this.oSR.ReadToEnd();*/
                // C'est ici que le coté générique de notre classe prend forme
                //if ((this.DBTYPE == this.MSACCESS))
                {
                    this.oSR = new System.IO.StreamReader(((Idata)this).IfileDB);
                    this.oCNX = new System.Data.OleDb.OleDbConnection(this.oSR.ReadLine());
                    this.oCMD = new System.Data.OleDb.OleDbCommand();
                    this.oDA = new System.Data.OleDb.OleDbDataAdapter();
                }
                /*if ((this.DBTYPE == this.SQLSERVER))
                {
                    this.oSR = new System.IO.StreamReader(((Idata)this).IfileDB);
                    this.oCNX = new System.Data.SqlClient.SqlConnection(this.oSR.ReadLine());
                    this.oCMD = new System.Data.SqlClient.SqlCommand();
                    this.oDA = new System.Data.SqlClient.SqlDataAdapter();
                }*/
                {
                    this.oCMD.CommandText = this.R_sql;
                    this.oCMD.CommandType = CommandType.Text;
                    this.oCMD.Connection = this.oCNX;
                }
                {
                    this.oDA.SelectCommand = this.oCMD;
                }
                this.oDS = new System.Data.DataSet();
            }
     
            #endregion
     
            #region Idata Members
            string LIB_data.Idata.IfileDB
            {
                get
                {
                    return "C:\\Users\\Annabelle\\Desktop\\Projet Archi.net\\Test des tutos sur les services windows\\LIB_data\\data\\connectionString.dat";
                }
            }
     
            /*string LIB_data.Idata.IfileTYPE
            {
                get
                {
                    return "C:\\Users\\Annabelle\\Desktop\\Projet Archi.net\\Test des tutos sur les services windows\\LIB_data\\data\\typeDB.dat";
                }
            }*/
            #endregion
     
            #region Function of Idata
            System.Data.DataSet Idata.getExE()
            {
                this.oCMD.CommandText = this.R_sql;
                this.oDA.Fill(this.oDS);
                return this.oDS;
            }
            #endregion
        }
    }
    Service1.cs, le code de mon service windows (à côté j'ai un projectinstaller et un eventlog, mais on s'en moque pour le coup)
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Linq;
    using System.ServiceProcess;
    using System.Text;
     
    namespace Service_windows
    {
        public partial class Service1 : ServiceBase
        {
     
            private int i;
            private LIB_data.Idata oDATA;
            private System.Data.DataSet oDS;
            private Process[] all_process = new Process[11];
            private Process process;
            private string PROCCESS_NAME;
            private int count_proccess_interdit;
            private short countPassage;
            private System.Timers.Timer tim = new System.Timers.Timer(5000);
     
            public Service1()
            {
                InitializeComponent();
            }
     
            protected override void OnStart(string[] args)
            {
                tim.Elapsed += mvTimer_Elapsed;
                this.i = 0;
                this.countPassage = 0;
                this.oDATA = new LIB_data.CLdata();
                this.oDS = this.oDATA.getExE();
                this.count_proccess_interdit = this.oDS.Tables[0].Rows.Count;
                this.tim.Enabled = true;
                this.evt_interdit.WriteEntry("Service Windows démarré");
            }
     
            protected override void OnStop()
            {
            }
     
            protected override void OnPause()
            {
                base.OnPause();
                this.evt_interdit.WriteEntry("Service Windows en pause");
            }
     
            private void mvTimer_Elapsed(object pSender, System.Timers.ElapsedEventArgs ByValpArgs)
            {
                this.PROCCESS_NAME = this.oDS.Tables[0].Rows[i].ItemArray[1].ToString();
                this.all_process = System.Diagnostics.Process.GetProcessesByName(PROCCESS_NAME);
                if (all_process.Length > 0)
                {
                    this.process = all_process[0];
                    this.process.Kill();
                }
                this.i += 1;
                if (this.i == this.count_proccess_interdit)
                {
                    i = 0;
                }
                this.countPassage += 1;
                if (this.countPassage == 10)
                {
                    this.countPassage = 0;
                    GC.Collect();
                }
            }
     
        }
    }
    Voilà !
    Je ne demande pas à ce que l'on me demande la réponse sur un plateau d'argent (sauf si vous l'avez ) mais au moins si vous avez des pistes de solution !!
    Je précise que je n'ai pas le choix sur les technologies utilisées (dll, service windows et access) et aussi que je suis desespérée

    Merci d'avance !!
    Annabelle

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    C'est bon problème résolu, le code est tout à fait fonctionnel
    En fait le souci venait de.... l'eventlog, j'avais oublié de renseigner la source.
    Je ne sais pas pourquoi mais du coup le service ne voulait pas démarrer.
    Mais le service fonctionne correctement c'est l'essentiel

    Je suis contente

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/05/2009, 16h06
  2. service windows qui ne demarre pas automatiquement
    Par youcef81 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 17/07/2006, 08h41
  3. [ANT][Tomcat]Démarrage d'un service windows
    Par ellene dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 06/07/2006, 16h05
  4. Service windows qui ne repond pas
    Par youcef81 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 03/06/2006, 14h38
  5. Planifier le démarrage d'un service Window
    Par tscoops dans le forum Windows XP
    Réponses: 2
    Dernier message: 29/03/2005, 14h56

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