ServiceBase Sınıf

Tanım

Bir hizmet uygulamasının parçası olarak var olacak bir hizmet için temel sınıf sağlar. ServiceBase yeni bir hizmet sınıfı oluşturulurken öğesinden türetilmelidir.

public ref class ServiceBase : System::ComponentModel::Component
public class ServiceBase : System.ComponentModel.Component
type ServiceBase = class
    inherit Component
Public Class ServiceBase
Inherits Component
Devralma
Türetilmiş

Açıklamalar

Bir hizmet uygulamasında hizmet sınıfınızı tanımlarken öğesinden ServiceBase türetilir. Tüm yararlı hizmetler ve OnStop yöntemlerini geçersiz kılarOnStart. Ek işlevsellik için, hizmet durumundaki değişikliklere yanıt olarak ve'yi belirli bir davranışla geçersiz kılabilirsiniz OnPauseOnContinue .

Hizmet, kullanıcı arabirimini desteklemeyen ve oturum açmış kullanıcı hesabı altında çalışmayabilen uzun süre çalışan bir yürütülebilir dosyadır. Hizmet, bilgisayarda herhangi bir kullanıcı oturum açmadan çalıştırılabilir.

Varsayılan olarak, hizmetler Sistem hesabı altında çalışır ve bu, Yönetici hesabıyla aynı değildir. Sistem hesabının haklarını değiştiremezsiniz. Alternatif olarak, hizmetin altında çalıştırılacağı bir kullanıcı hesabı belirtmek için de ServiceProcessInstaller kullanabilirsiniz.

Yürütülebilir dosya birden fazla hizmet içerebilir ancak her hizmet için ayrı ServiceInstaller bir hizmet içermelidir. Örnek ServiceInstaller , hizmeti sisteme kaydeder. Yükleyici ayrıca her hizmeti hizmet komutlarını kaydetmek için kullanabileceğiniz bir olay günlüğüyle ilişkilendirir. Yürütülebilir main() dosyadaki işlevi hangi hizmetlerin çalıştırılması gerektiğini tanımlar. Hizmetin geçerli çalışma dizini, yürütülebilir dosyanın bulunduğu dizin değil sistem dizinidir.

Bir hizmeti başlattığınızda, sistem yürütülebilir dosyayı bulur ve yürütülebilir dosyanın içinde yer alan bu hizmet için yöntemini çalıştırır OnStart . Ancak, hizmetin çalıştırılması yürütülebilir dosyayı çalıştırmakla aynı değildir. Yürütülebilir dosya yalnızca hizmeti yükler. Hizmete Hizmet Denetim Yöneticisi aracılığıyla erişilir (örneğin, başlatıldı ve durduruldu).

Hizmette ServiceBase Start'ı ilk kez çağırdığınızda yürütülebilir dosya türetilmiş sınıfın oluşturucusunu çağırır. OnStart Oluşturucu yürütülür hemen sonra komut işleme yöntemi çağrılır. Oluşturucu, hizmet ilk kez yüklendikten sonra yeniden yürütülmediğinden, oluşturucu tarafından gerçekleştirilen işlemeyi tarafından OnStartgerçekleştirilen işlemden ayırmak gerekir. tarafından OnStop yayınlanabilir tüm kaynaklar içinde OnStartoluşturulmalıdır. Kaynakları oluşturucuda oluşturmak, hizmet kaynakları serbest bıraktıktan sonra OnStop yeniden başlatılırsa bunların düzgün oluşturulmasını engeller.

Hizmet Denetim Yöneticisi (SCM), hizmetle etkileşime geçmek için bir yol sağlar. SCM'yi kullanarak Başlat, Durdur, Duraklat, Devam et veya özel komutları hizmete geçirebilirsiniz. SCM, hizmetin Durdur, Duraklat veya Devam Et komutlarını CanStop kabul edip etmediğini belirlemek için ve CanPauseAndContinue değerlerini kullanır. SCM'nin bağlam menülerinde Durdur, Duraklat ve Devam Et yalnızca ilgili özellik CanStop veya CanPauseAndContinue hizmet sınıfındaysa true etkinleştirilir. Etkinleştirilirse, komut hizmete geçirilir ve OnStop, OnPauseveya OnContinue çağrılır. CanStop, CanShutdownveya CanPauseAndContinue isefalse, yöntemini uygulamış olsanız bile ilgili komut işleme yöntemi (örneğinOnStop) işlenmez.

SCM'nin ServiceController bir kullanıcı arabirimi kullanarak ne yaptığını program aracılığıyla yapmak için sınıfını kullanabilirsiniz. Konsolunda bulunan görevleri otomatikleştirebilirsiniz. , CanStopCanShutdownveya CanPauseAndContinue ise true ancak karşılık gelen bir komut işleme yöntemi (örneğinOnStop) uygulamadıysanız sistem bir özel durum oluşturur ve komutu yoksayar.

içinde , OnStopveya başka bir yöntem ServiceBaseuygulamanız OnStartgerekmez. Ancak, hizmetin davranışı içinde OnStartaçıklanmıştır, bu nedenle en azından bu üye geçersiz kılınmalıdır. Yürütülebilir main() dosyanın işlevi, yöntemini çağırarak hizmeti Hizmet Denetim Yöneticisi ile yürütülebilir dosyaya Run kaydeder. ServiceName yöntemine Run geçirilen nesnenin ServiceBase özelliği, o hizmetin hizmet yükleyicisinin özelliğiyle eşleşmelidirServiceName.

InstallUtil.exe hizmetini kullanarak sisteminize hizmet yükleyebilirsiniz.

Not

Hizmet çağrılarının bildirimini almak için Uygulama olay günlüğü dışında bir günlük belirtebilirsiniz, ancak AutoLog ne ne de EventLog özelliği özel bir günlüğe yazabilir. Otomatik günlüğe false kaydetmeyi kullanmak istemiyorsanız olarak ayarlayınAutoLog.

Oluşturucular

ServiceBase()

ServiceBase sınıfının yeni bir örneğini oluşturur.

Alanlar

MaxNameLength

Hizmet adı için en büyük boyutu gösterir.

Özellikler

AutoLog

Başlat, Durdur, Duraklat ve Devam komutlarının olay günlüğünde raporlanıp rapor edilmeyeceğini gösterir.

CanHandlePowerEvent

Hizmetin bilgisayar güç durumu değişikliklerinin bildirimlerini işleyip işleyemeyeceğini belirten bir değer alır veya ayarlar.

CanHandleSessionChangeEvent

Hizmetin bir Terminal Server oturumundan alınan oturum değişikliği olaylarını işleyip işleyemeyeceğini belirten bir değer alır veya ayarlar.

CanPauseAndContinue

Hizmetin duraklatılıp sürdürülemeyeceğini belirten bir değer alır veya ayarlar.

CanRaiseEvents

Bileşenin bir olay oluşturup oluşturamayacağını belirten bir değer alır.

(Devralındığı yer: Component)
CanShutdown

Sistem kapatılırken hizmete bildirim gönderilip bildirilmeyeceğini belirten bir değer alır veya ayarlar.

CanStop

Hizmetin başlatıldıktan sonra durdurulup durdurulamayacağını belirten bir değer alır veya ayarlar.

Container

öğesini IContainer içeren öğesini Componentalır.

(Devralındığı yer: Component)
DesignMode

öğesinin şu anda tasarım modunda olup olmadığını Component gösteren bir değer alır.

(Devralındığı yer: Component)
EventLog

Başlat ve Durdur gibi hizmet komut çağrılarının bildirimini Uygulama olay günlüğüne yazmak için kullanabileceğiniz bir olay günlüğü alır.

Events

Bu Componentöğesine eklenen olay işleyicilerinin listesini alır.

(Devralındığı yer: Component)
ExitCode

Hizmetin çıkış kodunu alır veya ayarlar.

ServiceHandle

Hizmetin hizmet denetim tutamacını alır.

ServiceName

Hizmeti sisteme tanımlamak için kullanılan kısa adı alır veya ayarlar.

Site

öğesini alır veya ayarlar ISiteComponent.

(Devralındığı yer: Component)

Yöntemler

CreateObjRef(Type)

Uzak bir nesneyle iletişim kurmak için kullanılan bir ara sunucu oluşturmak için gereken tüm ilgili bilgileri içeren bir nesne oluşturur.

(Devralındığı yer: MarshalByRefObject)
Dispose()

Component tarafından kullanılan tüm kaynakları serbest bırakır.

(Devralındığı yer: Component)
Dispose(Boolean)

tarafından kullanılan kaynakları (bellek dışında) atılır ServiceBase.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetLifetimeService()
Geçersiz.

Bu örnek için yaşam süresi ilkesini denetleen geçerli yaşam süresi hizmet nesnesini alır.

(Devralındığı yer: MarshalByRefObject)
GetService(Type)

veya tarafından ComponentContainersağlanan bir hizmeti temsil eden bir nesnesi döndürür.

(Devralındığı yer: Component)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
InitializeLifetimeService()
Geçersiz.

Bu örneğin yaşam süresi ilkesini denetlemek için bir yaşam süresi hizmet nesnesi alır.

(Devralındığı yer: MarshalByRefObject)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
MemberwiseClone(Boolean)

Geçerli MarshalByRefObject nesnenin sığ bir kopyasını oluşturur.

(Devralındığı yer: MarshalByRefObject)
OnContinue()

Türetilmiş bir sınıfta uygulandığında, OnContinue() Service Control Manager (SCM) tarafından hizmete bir Continue komutu gönderildiğinde çalışır. Bir hizmet duraklatıldıktan sonra normal çalışmaya devam ettiğinde gerçekleştirecek eylemleri belirtir.

OnCustomCommand(Int32)

Türetilmiş bir sınıfta uygulandığında, OnCustomCommand(Int32) Service Control Manager (SCM) hizmete özel bir komut geçirdiğinde yürütülür. Belirtilen parametre değerine sahip bir komut oluştuğunda gerçekleştirecek eylemleri belirtir.

OnPause()

Türetilmiş bir sınıfta uygulandığında, Hizmet Denetim Yöneticisi (SCM) tarafından hizmete bir Duraklat komutu gönderildiğinde yürütülür. Bir hizmet duraklatıldığında gerçekleştirecek eylemleri belirtir.

OnPowerEvent(PowerBroadcastStatus)

Türetilmiş bir sınıfta uygulandığında, bilgisayarın güç durumu değiştiğinde yürütülür. Bu, askıya alma moduna geçtiklerinde dizüstü bilgisayarlar için geçerlidir ve bu, sistemin kapatılmasıyla aynı değildir.

OnSessionChange(SessionChangeDescription)

Terminal Server oturumundan bir değişiklik olayı alındığında yürütülür.

OnShutdown()

Türetilmiş bir sınıfta uygulandığında, sistem kapatılırken yürütülür. Sistemin kapatılmasından hemen önce ne olması gerektiğini belirtir.

OnStart(String[])

Türetilmiş bir sınıfta uygulandığında, Hizmet Denetim Yöneticisi (SCM) tarafından hizmete bir Başlat komutu gönderildiğinde veya işletim sistemi başlatıldığında (otomatik olarak başlayan bir hizmet için) yürütülür. Hizmet başlatıldığında gerçekleştirecek eylemleri belirtir.

OnStop()

Türetilmiş bir sınıfta uygulandığında, Hizmet Denetim Yöneticisi (SCM) tarafından hizmete bir Stop komutu gönderildiğinde yürütülür. Bir hizmet çalışmayı durdurduğunda gerçekleştirecek eylemleri belirtir.

RequestAdditionalTime(Int32)

Bekleyen bir işlem için ek süre istemektedir.

RequestAdditionalTime(TimeSpan)

Bu yöntem OnStart, OnStop, OnPause veya OnContinue'dan çağrıldığında, hizmetin yanıt vermiyor olarak işaretlenmesini önlemek için belirtilen bekleme ipucu Hizmet Denetim Yöneticisi'ne geçirilir.

Run(ServiceBase)

Hizmet için yürütülebilir dosyayı Service Control Manager'a (SCM) kaydeder.

Run(ServiceBase[])

Yürütülebilir dosyayı birden çok hizmet için Hizmet Denetim Yöneticisi'ne (SCM) kaydeder.

ServiceMainCallback(Int32, IntPtr)

Komut işleyicisini kaydeder ve hizmeti başlatır.

Stop()

Yürütme hizmetini durdurur.

ToString()

Varsa, adını Componentiçeren bir String döndürür. Bu yöntem geçersiz kılınmamalıdır.

(Devralındığı yer: Component)

Ekinlikler

Disposed

Bileşen yöntemine Dispose() yapılan bir çağrı tarafından atıldığında gerçekleşir.

(Devralındığı yer: Component)

Şunlara uygulanır

Ayrıca bkz.