c # - hvordan kalder jeg min dll fra windows service?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg oprettede en c # biblioteksfil, som vil gå til lokal sti for f.eks. (C: \ test.txt) finde filen og upload til ftp-server.


Til testning kaldte jeg bare dll fra konsol app, men hvordan kan jeg køre som en windows service, der løber løbende?


Jeg formoder at køre denne dll som en tjeneste for at overvåge c: \ mappen, hvis nogen fil kommer som 'test.txt' og derefter upload.


Tak på forhånd

Bedste reference


En DLL kaldes, når du bruger dens funktioner. Så hvis du har et DLL-projekt med et par klasser og et par funktioner i dine klasser, skal du blot tilføje DLL'en som reference til dit Service-projekt og ringe til de relevante funktioner. [2]


Du vil måske bruge dette bibliotek til at oprette din Windows-service. Årsagen er, at når du opbygger en Windows-tjeneste ved hjælp af Visual Studio-skabelonen, er den resulterende build ikke rigtig at køre. Den resulterende build er en Windows-tjeneste, der skal installeres og derefter startes med Services Snap-In. Hoytsofts brugerdefinerede Windows Service-bibliotek, vil din tjeneste automatisk installere sig selv og starte automatisk automatisk - ligesom en almindelig Windows-applikation. [3] [4]


For at sikre, at din Service kører ved opstart, skal du huske at konfigurere din Service klasse til AutoStart (som forklaret i sin CodeProject artikel). For at sikre, at din Service kører kontinuerligt, selv når processen dræbes, kan du tilføje denne praktiske registreringsdatabasehak, som sætter genstartstjenesten flag for at genstarte straks.


Denne Registry Hack == Indtast billedbeskrivelse her


Registreringshack:


Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SYSTEMCurrentControlSetServices<YOUR\_SERVICE\_NAME\_HERE>", true);
key.SetValue("FailureActions", new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, Microsoft.Win32.RegistryValueKind.Binary);
key.Close();


Forstå, at enhver administrativ bruger stadig kan dræbe din proces ved blot at deaktivere din tjeneste.

Andre referencer 1


Tjek filen FileSystemWatcher for at se efter ændringer i en mappe/fil. [5]