Avatar billede claushelth Nybegynder
30. december 2003 - 13:20 Der er 4 kommentarer og
1 løsning

simpel windows service

jeg vil forsøge at lave min første windows service.

Jeg benytter visual studio .net 2003

og fandt en meget kort toturial her: http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=300

- Jeg har startet et nyt project -> windows service
- jeg har kopieret de to kodeblokke, fra toturialen, ind i min app.
- Det så ud som om der manglede en reference, så den har jeg tilføjet: System.Configuration.Install
samt tilføjet dette til filen: using System.Configuration.Install

servicen skriver i en fil når den bliver åbnet og lukket...meget simpelt.

men jeg får denne fejl: linje 30: 'writeDokService.Service1' does not contain a definition for 'Installers'

Hvad gør jeg galt?
Avatar billede claushelth Nybegynder
30. december 2003 - 13:22 #1
Her er hele koden....den er ikke så lang.

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.IO;
using System.Configuration.Install;


namespace writeDokService
{
    public class Service1 : System.ServiceProcess.ServiceBase
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Service1()
        {
            // This call is required by the Windows.Forms Component Designer.
            InitializeComponent();

            ServiceInstaller si = new ServiceInstaller();
            ServiceProcessInstaller spi = new ServiceProcessInstaller();

            si.ServiceName = "Service1"; // this must match the ServiceName specified in WindowsService1.
            si.DisplayName = "Devhood Tutorial Service"; // this will be displayed in the Services Manager.
            this.Installers.Add(si);
           
            spi.Account = System.ServiceProcess.ServiceAccount.LocalSystem; // run under the system account.
            spi.Password = null;
            spi.Username = null;
            this.Installers.Add(spi);

        }

        // The main entry point for the process
        static void Main()
        {
            System.ServiceProcess.ServiceBase[] ServicesToRun;
   
            // More than one user Service may run within the same process. To add
            // another service to this process, change the following line to
            // create a second service object. For example,
            //
            //  ServicesToRun = new System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
            //
            ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };

            System.ServiceProcess.ServiceBase.Run(ServicesToRun);
        }

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            components = new System.ComponentModel.Container();
            this.ServiceName = "Service1";
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        /// <summary>
        /// Set things in motion so your service can do its work.
        /// </summary>
        ///
        System.IO.StreamWriter file;
       
        protected override void OnStart(string[] args)
        {
            // create or open the file. Default path is "C:\windows\System32\"
            file = new StreamWriter( new FileStream("ServiceTest.log", System.IO.FileMode.Append ) );
            this.file.WriteLine("Starting Service");
            this.file.Flush();

        }

        /// <summary>
        /// Stop this service.
        /// </summary>
        protected override void OnStop()
        {
            this.file.WriteLine("Stopping Service");
            this.file.Flush();
            this.file.Close();

        }
    }
}
Avatar billede nielsbrinch Nybegynder
30. december 2003 - 13:47 #2
Hvis du skriver "this" og trykker punktum kommer der en liste med klasser, variabler og properties frem - en af dem skal hedde "Installers" ellers er der noget galt.
Avatar billede nielsbrinch Nybegynder
30. december 2003 - 13:51 #3
Avatar billede claushelth Nybegynder
30. december 2003 - 14:22 #4
this.
har ikke en "Installers"
Jeg har siddet og kigget på nogle toturials, uden at de giver mening, eller vil compiles i mit miljø.

De beskriver ikke noget om referencerne der skal med eller hvordan det der installer virker...(hvad er det?) Jeg kan se flere der laver en seperat fil med deres installer?

Jeg vil lige prøve den du skrev.
Avatar billede claushelth Nybegynder
30. december 2003 - 16:39 #5
;-) Takker mange gange for tutorialen, den havde lige lovligt mange ting med, men jeg kan både simplificere og udvide den.

Jeg vil ikke arbejde videre med ovenstående projekt da jeg ikker har brug for denne installer, fandt jeg ud af. Bruger InstallUtil istedet...vidste ikke det var det samme.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester