begin process at 2010 02 10 04:13:18
  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 Executer un service a distance [ par cloud8716 ] Bonjour,Je suis debutant en C# et je dois faire un programme qui permet de lister, demarrer et arreter des services sur une machine distante.Pour ce q probleme d' interopérabilité [ par thmatew ] Amis développeurs, bonjour,j'ai un petit souci, je n'arrive pas a utilisé une DLL que j'ai créer dans mon programme, c'est un petit programme tt simpl Conversion Csharp => VB ou VB.Net [ par cboulas ] Salut à tous je recherche à traduire le code CSharp suivant en VB ou VB.Net. Merci pour votre aide.private System.Timers.Timer SaveTimer;using System; Generer des points aleatoirement !? [ par jimmy69 ] Bonjour  a tous ,Je suis sous visual studio . net et j'apprends le c sharp !Je me suis fait une class que j'ai nomme MyPoint.cs que voici :----------- Serveur UDP [ par Sobieski ] Salut.Je voudrais printer dans la console ce qui arrive en UDP sur le port 4321. J'ai fait un bout de code mais ca plante comme il faut :/ using Syste c# [ par akodadi ] j ai un probleme j veux afficher une forme et j comprens pa ces messages d bugs public override <FONT color=#000 WebService C# (variable non modifiée !!) [ par mesdevs ] Bonjour, Je débute tout juste en C# (Visual Studio 2005), et j'ai déjà un problème (désolé si ça vous parait trivial, mais moi ça me prend la tête) : [C#][ActiveX][Thread][HTML/Javascript] Evénements OK mais pas dans tous les cas [ par Mediant ] Bonjour !Voilà, j'au dû me mettre au C# il y a quelque jours afin de réaliser un composant ActiveX. J'ai besoin que ce composant puisse m'envoyer des Plusieurs structures imbriquées [ par F0ra ] Bonjour, Je voudrais réaliser plusieurs structures imbriquées Comme : Couches[1].Neurons[1].w[1]=0 Dans le ficier Ia.cs : using System; using System


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,296 sec (4)

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