januari 15, 2022

skapa en Windows-tjänst i VB.NET

miljö:. Net, Visual Basic

introduktion

du vill skriva ett program som ständigt övervakar vissa filer, skapar en logg eller vad som helst, och en som sprang ständigt i bakgrunden medan maskinen är upptagen med att göra något annat. Det bästa sättet att göra detta var att köra ett Windows-program kontinuerligt eller med jämna mellanrum med hjälp av Windows scheduler. Men det var en stor nackdel: någon var tvungen att logga in på systemet för att starta den här applikationen.

Detta är inte längre ett problem eftersom det bästa sättet att göra allt detta är att skapa en Windows-tjänst för Windows 2000/Windows NT.

Vad är Windows-tjänst (tidigare kallad NT-tjänst)?

kärnfunktionen för en Windows-tjänst är att köra ett program i bakgrunden. Några saker som gör dem annorlunda än en Windows-applikation är att en Windows-tjänst startar innan någon användare loggar in på systemet (om den har ställts in för att starta vid uppstart). Tjänsten kan ställas in på ett sådant sätt att det kräver att användaren startar den manuellt.

dessutom har Windows-tjänsten sin egen process; därför körs det mycket effektivt. Normalt har en Windows-tjänst inte ett användargränssnitt av den enkla anledningen att den kan köras även om ingen är inloggad på systemet. Det här är ingen regel, du kan fortfarande ha en Windows-tjänst med ett användargränssnitt.

i Windows 2000 kan du visa alla tjänster som körs på din dator genom att öppna Kontrollpanelen, Administrationsverktyg och sedan klicka på tjänster.

skapa en Windows-tjänst i VB.NET

före VB.NET, att skapa en Windows-tjänst var mycket arbete. Du var tvungen att använda något systemnivåförfarande som inte var så lätt, men tack vare VB.NET detta har blivit väldigt enkelt. Vi ska nu lära oss hur man skapar en Windows-tjänst.

du borde veta några saker innan vi dyker in. Windows-tjänsten är inte tillgänglig i Windows 95, 98 eller ME. Du måste ha Windows NT eller Windows 2000 för att köra tjänster.

fördelen med att använda.NET är att ramverket innehåller alla klasser. Detta ska hjälpa oss att skapa, installera och kontrollera Windows-tjänsten.

öppna din Visual Studio .NET, skapa ett nytt Windows – serviceprojekt, som vi ska ringa MyService och klicka sedan på OK.

Lägg till Timerkontrollen från verktygsfältet på fliken komponenter. I egenskapsfönstret i Timer1 ändrar du Intervallegenskapen till 10000, vilket är 10 sekunder.

källkoden

dubbelklicka på timer1-kontrollen för att öppna ett kodfönster för Timer1_Elapsed och skriv följande kod. (Denna kod ska utföras var 10: e sekund.)

 Dim MyLog As New EventLog() ' create a new event log ' Check if the the Event Log Exists If Not MyLog.SourceExists("MyService") Then MyLog.CreateEventSource("MyService", "Myservice Log") ' Create Log End If MyLog.Source = "MyService" ' Write to the Log MyLog.WriteEntry("MyService Log", "This is log on " & _ CStr(TimeOfDay), _ EventLogEntryType.Information)

Skriv följande kod i OnStart-proceduren. (Denna procedur anropas när du startar tjänsten, som ska aktivera timern.)

 Timer1.Enabled = True

och skriv följande kod i onstop-proceduren. (Denna procedur anropas när du stoppar tjänsten, som ska inaktivera timern.)

 Timer1.Enabled = False

vår ansökan är nu klar, men några saker måste fortfarande göras innan vi går vidare. När vi bygger den här applikationen är den körbara skapade inte en Windows-applikation; därför kan du inte bara klicka och köra den. Det måste installeras som en tjänst men oroa dig inte; vi behöver inte göra det manuellt. VB.Net har en möjlighet att lägga till ett installationsprogram till vårt program och sedan använda ett verktyg för att installera tjänsten.

lägga till installationsprogrammet i projektet

öppna Tjänsten1.VB design fönster och högerklicka och välj sedan alternativet Lägg till installationsprogram. Detta lägger till ett installationsprojekt, ProjectInstaller.vb, med två kontroller, ServiceProcessInstaller1 och ServiceInstaller1, i vårt befintliga projekt.

Välj kontrollen ServiceInstaller1 och öppna egenskapsfönstret. Ändra egenskaperna ServiceName och DisplayName till MyService. (Det här är namnet du vill visas i listan över tjänster i tjänster windows.)

Välj kontrollen ServiceProcessInstaller1 och öppna egenskapsfönstret. Ändra Kontoegenskapen till LocalSystem. (Detta måste anges eftersom vi måste köra detta på vår lokala maskin.)

nu är det dags att bygga programmet och skapa en körbar. Välj Build Solution från menyn Build för att skapa en körbar med installationsanvisningar för tjänsten.

installera tjänsten

för att installera den här tjänsten måste vi använda InstallUtil-programmet, vilket är ett.NET-verktyg, för att installera Windows-tjänsten. Du hittar detta i mappen C:\WINNT\Microsoft.NET\Framework\v1.0.3705. (detta kan vara annorlunda på din dator, beroende på vilken version du använder.)

Alternativt kan du köra kommandofönstret.Net genom att välja Start, Program, Microsoft Visual Studio. Net, Visual Studio. Net Tools, Visual Studio. Net Command Prompt. Detta ställer in alla nödvändiga vägar för dig.

Skriv följande kommando i det fönstret: InstallUtil C:\tgol\Myservice\Bin\Myservice.exe. (Det här är Sökvägen för den körbara tjänsten vi just skapade. Kom ihåg, VB.NET skapade den körbara I Bin-mappen under projektmappen. Se till att du ändrar detta till din körbara sökväg.) Titta på meddelandet och logga för att se till att tjänsten är korrekt installerad.

att starta tjänsten

att köra en tjänst och starta en tjänst är två olika saker. När vi installerar tjänsten med InstallUtil kör vi nu tjänsten men har ännu inte startat den. För att visa och starta tjänsten, öppna Kontrollpanelen. Öppna Administrationsverktyg, klicka på tjänster, leta upp MyService och högerklicka och välj Start för att starta den här tjänsten.

nu har vår tjänst börjat. Öppna Loggboken från Administrationsverktyg och klicka på programloggen för att se loggarna som skapats av Tjänsten (MyService) var 10: e sekund. (Om du inte ser några loggar klickar du på Uppdatera . Du måste hålla uppfriskande att se de senaste händelseloggar.

stoppa tjänsten

öppna Kontrollpanelen, öppna Administrationsverktyg, klicka på tjänster, högerklicka på MyService och välj Stopp för att stoppa tjänsten.

avinstallera tjänsten

denna procedur liknar installationen av tjänsten, men nu ska vi köra InstallUtil med / U-parametern, som avinstallerar tjänsten:

InstallUtil / U C:\tgol\Myservice\Bin\Myservice.exe (eller körbar sökväg på din dator). Titta på meddelandet för att bekräfta att tjänsten avinstalleras korrekt.

Tips

  • stoppa tjänsten och stäng servicefönstret innan du installerar/avinstallerar tjänsten.
  • avinstallera/installera alltid om du gör några ändringar i serviceprogrammet.
  • försök att undvika användargränssnitt, ingångar och msgbox i serviceprogrammet.
  • Öppna ProjectInstaller.vb, välj ServiceInstaller1 kontroll och öppna egenskapsfönstret. Ändra StartType-egenskapen till automatisk om du vill starta tjänsten automatiskt.

slutsats

Windows-tjänsten förbises ofta. Använd Windows-tjänsten istället för en standardapplikation när du måste övervaka eller administrera något i bakgrunden. Den enda nackdelen är installationsproceduren, men jag slår vad om att det finns mer positiva aspekter än negativa när du väljer Windows-tjänst över program som kör Windows Scheduler.

Lämna ett svar

Din e-postadress kommer inte publiceras.