begin process at 2012 02 10 20:34:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

Au secours

 > 

Problèmes de création d'un service Windows


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problèmes de création d'un service Windows

vendredi 25 novembre 2005 à 11:23:05 | Problèmes de création d'un service Windows

nyoto

Bonjour à tous,

Ne développant pas depuis très longtemps en .Net je galère grave pour créer un service windows récupérant automatiquement à intervalles de temps données des images situées sur le web.

Voilà ci-dessous mon code source, il est important de noter que j'avais à la base codé une application windows et que cette récupération fonctionnait correctement ...


Merci d'avance ...



using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.ServiceProcess;

using System.Net;

using System.Timers;

using System.Threading;

using System.Xml;

using System.Configuration.Install;

using System.Web.Mail;

namespace ServiceFStatsTNT

{

// Cette classe permet de pouvoir compiler le service afin d'en obtenir un executable binaire

// Cependant, ce n'est pas suffisant pour installer le service windows. Ceci permet juste d'avoir un .exe

// Il faudra une etape supplementaire pour installer le service sur votre machine

[RunInstaller(true)]

public class MyProjectInstaller: Installer

{

public MyProjectInstaller() :base()

{

this.Committed += new InstallEventHandler(MyProjectInstaller_Committed);

this.Committing += new InstallEventHandler(MyProjectInstaller_Committing);

//Instantie les installeurs

ServiceInstaller monServiceInstaller = new ServiceInstaller();

ServiceProcessInstaller monProcessInstaller = new ServiceProcessInstaller();

// Le nom du service doit etre egal au nom de la classe ServiceBase dont on derive

//(voir le Public Sub New() de la classe MonService pour comprendre)

monServiceInstaller.ServiceName = "ServiceFStatsTNT";

monServiceInstaller.DisplayName = "ServiceFStatsTNT";

// Ajouter les installeurs à la collection (l'ordre n'est pas important)

this.Installers.Add(monServiceInstaller);

// Le service sera lancé sous le compte Systeme

monProcessInstaller.Account = System.ServiceProcess.ServiceAccount.LocalSystem;

// Ajouter les installeurs à la collection (l'ordre n'est pas important)

this.Installers.Add(monProcessInstaller);

}

private void MyProjectInstaller_Committing(object sender, InstallEventArgs e)

{

Console.WriteLine("");

Console.WriteLine("Committing Event occured.");

Console.WriteLine("");

}

private void MyProjectInstaller_Committed(object sender, InstallEventArgs e)

{

Console.WriteLine("");

Console.WriteLine("Committed Event occured.");

Console.WriteLine("");

}

public override void Install(IDictionary savedState)

{

base.Install(savedState);

}

public override void Commit(IDictionary savedState)

{

base.Commit(savedState);

}

public override void Rollback(IDictionary savedState)

{

base.Rollback(savedState);

}

}

public class Service1 : System.ServiceProcess.ServiceBase

{

/// <summary>

/// Variable nécessaire au concepteur.

/// </summary>

private System.ComponentModel.Container components = null;

public Service1()

{

// Cet appel est requis par le Concepteur de composants Windows.Forms.

InitializeComponent();

// TODO : ajoutez les initialisations après l'appel à InitComponent

ServiceName = "ServiceFStatsTNT";

}

// Le point d'entrée principal pour le processus

static void Main()

{

System.ServiceProcess.ServiceBase[] ServicesToRun;

// Plusieurs services utilisateurs peuvent s'exécuter dans le même processus. Pour ajouter

// un autre service à ce processus, modifiez la ligne suivante

// afin de créer un second objet service. Par exemple,

//

// ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};

//

ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };

System.ServiceProcess.ServiceBase.Run(ServicesToRun);

}

/// <summary>

/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas

/// le contenu de cette méthode avec l'éditeur de code.

/// </summary>

private void InitializeComponent()

{

components = new System.ComponentModel.Container();

this.ServiceName = "ServiceFBoxStatsTNT";

}

/// <summary>

/// Nettoyage des ressources utilisées.

/// </summary>

protected override void Dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.Dispose();

}

}

base.Dispose( disposing );

}

/// <summary>

/// Démarrage du service.

/// </summary>

protected override void OnStart(string[] args)

{

try

{

// Lancement d'un thread qui se chargera du téléchargement

Thread th = new Thread(new ThreadStart(StartBoucle));

th.Start();

}

catch (Exception ex)

{

//ecrire l'erreur dans l'event log de la machine

EventLog.WriteEntry("ServiceFBoxStatsTNT", ex.Message, EventLogEntryType.Error, 15);

}

}

public void StartBoucle()

{

System.Timers.Timer aTimer = new System.Timers.Timer();

aTimer.Elapsed+=new ElapsedEventHandler(StartDownload);

// Définition de l'intervalle du Timer (toute les 60 minutes) 3600000

aTimer.Interval=6000;

aTimer.Enabled=true;

}

public void StartDownload(object source, ElapsedEventArgs e2)

{

try

{

// Création d'un objet WebClient (c'est lui qui permet de télécharger un fichier)

WebClient wc = new WebClient();

string dateactu = DateTime.Now.ToString("dd-MM-yy_HH-mm-ss");

string[] chaine = {"NRJ_12", "W9", "MTV_France", "Europe_2_TV", "Gulli", "NT1"};

//string chemin = "images/NRJ12_" + dateactu + ".jpg";

string laDate = DateTime.Now.ToString("dd/MM/yyyy");

string lHeure = DateTime.Now.ToString("HH:mm:ss");

int vari;

string cheminITV = "P:\\majvirus\\testTonio\\I-TV_" + dateactu + ".jpg";

wc.DownloadFile(@"http://audience.free.fr/graphs/i>TELE-part-3600.gif", @cheminITV);

for (vari=0; vari<=5; vari++)

{

string chemin = "P:\\majvirus\\testTonio\\" + chaine[vari] + "_" + dateactu + ".jpg";

// Lancement du téléchargement

// argument 1 : url du fichier source

// argument 2 : l'emplacement ou enregistrer le fichier sur le disque dur

wc.DownloadFile(@"http://audience.free.fr/graphs/" + chaine[vari] + "-part-3600.gif", @chemin);

}

// Destruction de l'objet WebClient

wc.Dispose();

// Et un petit message pour dire que le téléchargement est terminé

//MessageBox.Show("Le téléchargement est terminé", "info", MessageBoxButtons.OK, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

}

catch(Exception e)

{

EventLog.WriteEntry("FBoxStatsTNT", e.Message, EventLogEntryType.Error, 15);

}

}

/// <summary>

/// Arrêt du service.

/// </summary>

protected override void OnStop()

{

// TODO : ajoutez ici le code pour effectuer les destructions nécessaires à l'arrêt de votre service.

}

}

}

vendredi 25 novembre 2005 à 12:18:20 | Re : Problèmes de création d'un service Windows

TheSaib

Administrateur CodeS-SourceS
So the problem is ?
vendredi 25 novembre 2005 à 12:22:59 | Re : Problèmes de création d'un service Windows

nyoto

Oui ok j'ai pa exactement tout dit ...
Il semblerait après mise en place et lancement du service que clui-ci tente de faire son job mais il bloque lors de l'écriture de la première image et si on regarde l'emplacement de destination, un fichier image est bien créé mais il est vide et les autres images ne sont pas traités ...
vendredi 25 novembre 2005 à 12:26:47 | Re : Problèmes de création d'un service Windows

TheSaib

Administrateur CodeS-SourceS
Un exception dans les logs ?
vendredi 25 novembre 2005 à 12:30:06 | Re : Problèmes de création d'un service Windows

nyoto

Oui ... Une exception s'est produite lors d'une demande Webclient (ça je m'en doutais ...) mais pas plus d'infos hélas ...
Je nage grave et je bloque dessus depuis hier ... puis je ne suis qu'un newb !!!

vendredi 25 novembre 2005 à 12:38:44 | Re : Problèmes de création d'un service Windows

TheSaib

Administrateur CodeS-SourceS
Etre Newbie n'est pas une excuse. Quelle ligne ?
vendredi 25 novembre 2005 à 12:44:39 | Re : Problèmes de création d'un service Windows

TheSaib

Administrateur CodeS-SourceS
JE pense que le problème vient du fait que le service tourne avec l'utilisateur "Local System" qui n'a pas les droits d'acceder au réseau et par conséquence de telecharger le fichier sur le net.
vendredi 25 novembre 2005 à 12:47:53 | Re : Problèmes de création d'un service Windows

TheSaib

Administrateur CodeS-SourceS
Une fois ton service installée change le compte qui le lance et çà devrait marcher. Par ailleur je en sais pas pourquoi tu met tes noms de ficheir en dur sachant que la page de free peut te fournir un XML. http://audience.free.fr/audience15.xml
vendredi 25 novembre 2005 à 13:03:15 | Re : Problèmes de création d'un service Windows

nyoto

Ben paske j'my connais pas encore en XML ... mais effectivement c'est une façon différente d'aborder le prob !!!
Je déj, je teste ta soluce et j'te tiens au courant ...
En tout cas merci du coup de main !!!

vendredi 25 novembre 2005 à 14:55:48 | Re : Problèmes de création d'un service Windows

nyoto

Flutte ...
Ben j'ai exactement la même erreur avec un compte admin et idem en tentant mon écriture en local ...

1 2 3

Cette discussion est classée dans : public, system, service, void, using


Répondre à ce message

Sujets en rapport avec ce message

Forms en série... [ par immerczeck ] Bonjour!Pourriez-vous m'aider à trouver l'erreur dans ce code, à chaque fois que je clique sur le button1, une fenêtre apparaît, mais elle reste bloqu Gestion des erreurs WCF dans Silverlight [ par EmacLi ] Bonjour à tous, Dans mon application silverlight, je tombe sur cette erreur apparemment classique lorsqu'un service wcf est utilisé : CommunicationEx Plantage designer suite à une modification sur le formulaire [ par Mickael1984 ] Bonjour, je suis un peu perdu sur un développement que je fais actuellement je mets le code, si quelqu'un a déjà eu ce genre de problème. Mon problè probléme : Object reference not set to an instance of an object [ par ami7 ] bonjour j'ai message d'erreur suivant : Object reference not set to an instance of an object et indique un trait jaune au niveau de la méthode " de boucle infini - services [ par jumicoud ] Bonjour, Je réalise un service qui à pour but de faire communiquer 2 applications client serveur. Avec l'application A je communique en TCP, avec la aceeder une zone de texte créer dynamiquement [ par abrim ] Bonjour Tout le monde Je débute avec c# j'ai besoin de votre aide , Moi j'ai cré un bouton et une zone de text dynamiquement avec c# sous visual stu Problème de portée de variables en C# [ par Chaboow ] Bonjour,Je suis actuellement en stage sur un projet C# objet. Je découvre le monde de l'objet et je bloque sur un problème de portée de variables ...V Transmettre les données d'un a un autre form [ par Lorine ] Bonjour, J'ai un form dans lequel j'ai un menu avec * charger la base de donnée * Accès au deuxième form Et une datagridview [code=cs] using System


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales