2009-05-20 23 views
5

.net 2.0'da bir Windows servisi yazıyorum.OnStart yönteminde bir hizmet nasıl durdurulur?

Bazı nedenlerden dolayı hizmetimin başlamasını istemediğimde OnStart() yönteminde ne yapmalıyım? Temel sınıfın (ServiceBase) Stop() yöntemini çağırabilir miyim? Bunu denedim ve bazı komik bellek erişim istisnaları alıyorum. Stop() yöntemini çağırmak için ayrı bir iş parçacığı başlatılması gerekli mi?

cevap

8

Bunu neden yapmak istiyorsunuz? Bir hata varsa, olay günlüğüne kaydedin ve bir istisna atın. Hizmetiniz başlatılmayacak ve kullanıcıya kötü bir şey olduğu bildirilecektir.

+0

Gerçekten de, bir istisna atarsanız, hizmet başlamaz. Windows Services bunu sizin için halleder. – Noldorin

+0

Bir servisin başlamasını istememesinin birçok sebebi var! Bu yüzden belki de neden sormuyorsunuz, aksine cevabı önermek bir istisna atmak mı? ServiceBase.ExitCode ayarı hakkında - bu tavsiye/gerekli mi? – Rory

+1

@Rory: Hizmetin başlatılamaması, hemen başlangıç ​​ve durdurma işlemlerinden farklı bir şeydir. Başlamadan ve sessizce durmaya karşıyım. ExitCode olay günlüğüne kaydedilir, böylece ayarlamayı düşünebilirsiniz. Gerçi gerekli değil. –

0

Bir ServiceController kullanın ve bunun üzerinden durdurun ve hemen geri dönün.

0

Environment.FailFast()'u kullanabilirsiniz. Sadece herhangi bir try-catch-nihayet blokları görmezden geldiğinin farkında olun.

İlgili konular