Tworzenie usługi Windows w VB.NET
środowisko:. NET, Visual Basic
wprowadzenie
chcesz napisać aplikację, która stale monitoruje niektóre pliki, tworzy dziennik lub cokolwiek, i taką, która działa stale w tle, gdy maszyna jest zajęta robieniem czegoś innego. Najlepszym sposobem na to było ciągłe lub regularne uruchamianie aplikacji Windows za pomocą harmonogramu Windows. Ale była jedna duża wada: ktoś musiał zalogować się do systemu, aby uruchomić tę aplikację.
nie jest to już problem, ponieważ najlepszym sposobem na zrobienie tego wszystkiego jest utworzenie usługi Windows Dla Windows 2000/Windows NT.
Co To jest usługa Windows (wcześniej nazywana usługą NT)?
podstawową funkcją Usługi Windows jest uruchamianie aplikacji w tle. Kilka rzeczy, które odróżniają je od aplikacji systemu Windows jest to, że usługa systemu Windows uruchamia się przed każdym użytkownikiem loguje się do systemu(jeśli został skonfigurowany do uruchamiania przy rozruchu). Usługę można skonfigurować w taki sposób, aby wymagała od użytkownika ręcznego uruchomienia.
ponadto usługa Windows ma swój własny proces, dlatego działa bardzo wydajnie. Zwykle usługa Windows nie ma interfejsu użytkownika z tego prostego powodu, że można ją uruchomić, nawet jeśli nikt nie jest zalogowany do systemu. Nie jest to reguła; nadal możesz mieć usługę Windows z interfejsem użytkownika.
w systemie Windows 2000 możesz wyświetlić wszystkie usługi uruchomione na komputerze, otwierając panel sterowania, Narzędzia administracyjne, a następnie klikając usługi.
Tworzenie usługi Windows w VB.NET
przed VB.NET, stworzenie usługi Windows było dużo pracy. Trzeba było zastosować jakąś procedurę na poziomie systemu, która nie była zbyt łatwa, ale dzięki VB.NET stało się to bardzo proste. Teraz nauczymy się, jak utworzyć usługę Windows.
zanim się zanurzymy, powinieneś wiedzieć kilka rzeczy. Usługa Windows nie jest dostępna w systemach Windows 95, 98 ani ME. Do uruchamiania usług potrzebny jest System Windows NT lub Windows 2000.
zaletą korzystania z. NET jest to, że framework zawiera wszystkie klasy. Pomoże nam to stworzyć, zainstalować i kontrolować usługę Windows.
otwórz swoje Visual Studio .NET, utwórz nowy projekt usługi Windows, który nazwiemy MyService, a następnie kliknij OK.
Dodaj sterowanie Timer z paska narzędzi na karcie Komponenty. W oknie Właściwości Timer1 zmień właściwość Interval na 10000, czyli 10 sekund.
kod źródłowy
kliknij dwukrotnie kontrolkę Timer1, aby otworzyć okno kodu dla Timer1_Elapsed i wpisz następujący kod. (Kod ten wykonuje się co 10 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)
wpisz następujący kod w procedurze OnStart. (Procedura ta jest wywoływana po uruchomieniu usługi, która włącza timer.)
Timer1.Enabled = True
i wpisz następujący kod w procedurze OnStop. (Procedura ta jest wywoływana po zatrzymaniu usługi, co spowoduje wyłączenie timera.)
Timer1.Enabled = False
nasza aplikacja jest już gotowa, ale zanim przejdziemy do przodu, musimy jeszcze zrobić kilka rzeczy. Kiedy tworzymy tę aplikację, utworzony plik wykonywalny nie jest aplikacją dla systemu Windows; dlatego nie można go po prostu kliknąć i uruchomić. Musi być zainstalowany jako usługa, ale nie martw się, nie musimy tego robić ręcznie. VB.Net ma możliwość dodania instalatora do naszego programu, a następnie użycia narzędzia do zainstalowania usługi.
dodanie Instalatora do projektu
Otwórz Usługę1.okno VB design i kliknij prawym przyciskiem myszy, a następnie wybierz opcję Dodaj Instalator. Dodaje to projekt instalatora, ProjectInstaller.vb, z dwoma sterownikami, ServiceProcessInstaller1 i ServiceInstaller1, w naszym istniejącym projekcie.
Wybierz kontrolkę ServiceInstaller1 i otwórz okno właściwości. Zmień właściwości Serviceename i DisplayName na MyService. (Jest to nazwa, którą chcesz wyświetlić na liście usług w oknach usług.)
Wybierz kontrolkę ServiceProcessInstaller1 i otwórz okno właściwości. Zmień właściwość konta na LocalSystem. (Musi to być określone, ponieważ musimy to uruchomić na naszej lokalnej maszynie.)
teraz czas na zbudowanie aplikacji i utworzenie pliku wykonywalnego. Wybierz opcję Zbuduj rozwiązanie z menu budowanie, aby utworzyć plik wykonywalny z instrukcjami instalacji usługi.
instalacja usługi
aby zainstalować tę usługę, musimy użyć programu InstallUtil, który jest narzędziem.NET, aby zainstalować usługę Windows. Znajdziesz to w folderze C:\WINNT\Microsoft.NET\Framework\v1.0.3705. (może to być inne na komputerze, w zależności od używanej wersji.)
Alternatywnie można uruchomić okno poleceń. NET, wybierając Start, Programy, Microsoft Visual Studio. NET, narzędzia Visual Studio. NET, Wiersz polecenia Visual Studio. NET. To ustawia wszystkie wymagane ścieżki dla ciebie.
wpisz następujące polecenie w tym oknie: InstallUtil C:\tgol\Myservice\Bin\Myservice.exe. (Jest to ścieżka do pliku wykonywalnego usługi, którą właśnie stworzyliśmy. Pamiętaj, VB.NET utworzono plik wykonywalny w folderze Bin w folderze projektu. Upewnij się, że zmieniłeś to na ścieżkę wykonywalną.) Proszę spojrzeć na wiadomość i zalogować się, aby upewnić się, że usługa jest poprawnie zainstalowana.
uruchamianie usługi
uruchamianie usługi i uruchamianie usługi to dwie różne rzeczy. Po zainstalowaniu usługi z InstallUtil, jesteśmy teraz uruchomienie usługi, ale jeszcze go uruchomić. Aby wyświetlić i uruchomić usługę, otwórz Panel sterowania. Otwórz Narzędzia administracyjne, kliknij usługi, zlokalizuj MyService, a następnie kliknij prawym przyciskiem myszy i wybierz Start, aby uruchomić tę usługę.
teraz nasza usługa się rozpoczęła. Otwórz przeglądarkę zdarzeń w narzędziach administracyjnych i kliknij Dziennik aplikacji, aby zobaczyć dzienniki utworzone przez usługę (MyService) co 10 sekund. (Jeśli nie widzisz żadnych dzienników, kliknij Odśwież . Będziesz musiał odświeżać, aby zobaczyć najnowsze dzienniki zdarzeń.
zatrzymanie usługi
otwórz Panel sterowania, otwórz Narzędzia administracyjne, kliknij Usługi, kliknij prawym przyciskiem myszy MyService i wybierz Zatrzymaj, aby zatrzymać usługę.
odinstalowanie usługi
ta procedura jest podobna do instalacji usługi, ale teraz uruchomimy InstallUtil z parametrem / U, który odinstaluje usługę:
InstallUtil / U C:\tgol\Myservice\Bin\Myservice.exe (lub ścieżka wykonywalna na komputerze). Proszę spojrzeć na komunikat, aby potwierdzić, że usługa została prawidłowo odinstalowana.
wskazówki
- Zatrzymaj usługę i zamknij okno usługi przed zainstalowaniem/odinstalowaniem usługi.
- zawsze Odinstaluj/zainstaluj, jeśli dokonasz jakichkolwiek zmian w aplikacji usługowej.
- staraj się unikać interfejsu użytkownika, wejść i msgbox w aplikacji usługowej.
- Otwórz ProjectInstaller.VB, wybierz kontrolkę ServiceInstaller1 i otwórz okno właściwości. Zmień właściwość StartType na Automatic, jeśli chcesz uruchomić usługę automatycznie.
podsumowanie
usługa Windows jest często pomijana. Użyj usługi Windows zamiast standardowej aplikacji, gdy musisz monitorować lub administrować czymś w tle. Jedyną wadą jest procedura instalacji, ale założę się, że jest więcej pozytywnych aspektów niż negatywnych przy wyborze usługi Windows zamiast aplikacji z systemem Windows Scheduler.