Mam usługę windows, która uruchamia wątek w metodzie OnStart.Jak zatrzymać aplikację usługi systemu Windows z wątku?
Zasadniczo chcę być w stanie zatrzymać usługę, jeśli coś pójdzie nie tak (jak nieobsługiwany wyjątek).
Obecnie używam ServiceBase.Stop()
, ale wymaga to wystąpienia instancji ServiceBase
gdzieś widocznej dla wątku, co z kolei wymaga zadeklarowania mojej instancji jako public static
w programie głównym.
Czy istnieje "lepszy sposób", aby zatrzymać usługę? Jeśli tak nie jest ... czy jest to bezpieczne?
Nie sądzę, że mądrze jest założyć (we wszystkich przypadkach), że twoje konto usługowe będzie miało dostęp do menedżera sterowania usługami, z którego korzysta ServiceController. To właśnie chcesz kontrolować proces z zewnątrz, a nie dobre rozwiązanie IMO od środka. – jlew
Bardzo dobry punkt. W takim przypadku sugerowałbym przekazanie instancji usługi do wątku lub jak sugerowałby to inny plakat, czyniąc go singletonem. –