2011-03-28 5 views
0

Qu'est-ce qu'un court exemple avec un service Windows et comment l'installer et l'exécuter?C# à propos du service Windows

J'ai cherché sur Internet, mais ce que j'ai essayé n'a rien écrit sur la méthode On Start. De plus, quand j'ai essayé de l'installer, l'erreur OpenSCManager continue à apparaître.

+0

un service Windows peut être juste un 'dll 'avec le début de l'application sur l'événement' OnStart'. Prenez soin de nous montrer plus ce que vous essayez de faire? – balexandre

Répondre

3
  1. Trouvez util installer à C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe

  2. Ensuite, exécutez InstallUtil.exe "c:\myservice.exe"

  3. Aller à services.msc et puis recherchez et démarrez votre service

+0

Je ne trouve pas l'installation. existe-t-il un autre moyen de tester l'application? – elisa

+0

si vous voulez déboguer votre service Windows, suivez cette étape 1> ajoutez app.config 2> ajoutez cet extrait de code dans votre service.cs public static void Main() { #if (! DEBUG) ServiceBase [] ServicesToRun; ServicesToRun = nouveau ServiceBase [] { nouveau MyServiceClassName() }; Exécuter (ServicesToRun); #else var service = new MonServiceClassName(); service.OnStart (null); System.Threading.Thread.Sleep (System.Threading.Timeout.Infinite); #endif } –

+0

quelle version de .net utilisez-vous? peut-être le télécharger sur le web –

0

Ma réponse à cette question vous donne des instructions pas à pas pour créer un service Windows en C#.

Ma réponse à cette question montre que vous devez modifier le service afin qu'il puisse installer et désinstaller lui-même à partir de la ligne de commande.

InstallUtil.exe fait partie de .NET 1.1 depuis, il devrait donc être sur votre système. Cependant, vous ne pouvez probablement pas l'utiliser à partir d'une invite de commande "normale". Si vous avez Visual Studio installé, ouvrez l'invite de commande Visual Studio. Cela va définir les variables d'environnement appropriées qui rendent InstallUtil accessible sans informations de chemin. La fonction de rappel OnStart() vous permet de démarrer la logique métier de votre service. Si vous ne faites rien dans le rappel OnStart(), votre service s'arrêtera immédiatement. En règle générale, vous allez commencer un thread qui effectue le travail qui vous intéresse. Voici un petit exemple pour vous montrer à quoi il ressemble.

private static System.Timers.Timer _timer; 

private static void OnTimedEvent(object source, ElapsedEventArgs e) 
{ 
    // Write a message to the event log. 
    string msg = String.Format("The Elapsed event was raised at {0}", e.SignalTime); 
    EventLog.WriteEntry(msg, EventLogEntryType.Information); 
} 

protected override void OnStart(string[] args) 
{ 
    // Create a timer with a 10-econd interval. 
    _timer = new System.Timers.Timer(10000); 

    // Hook up the Elapsed event for the timer. 
    _timer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 

    // Signal the timer to raise Elapsed events every 10 seconds. 
    _timer.Start(); 
} 

protected override void OnStop() 
{ 
    // Stop and dispose of the timer. 
    _timer.Stop(); 
    _timer.Dispose(); 
} 

Si vous faites quelque chose comme ceci, votre service sera effectivement maintenu jusqu'à ce qu'il s'éteigne. J'espère que cela t'aides.