Aracılığıyla paylaş


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 davranışını 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ışabilir.

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 kullanabilirsiniz ServiceProcessInstaller .

Yürütülebilir dosya birden fazla hizmet içerebilir ancak her hizmet için ayrı ServiceInstaller bir hizmet içermelidir. ServiceInstaller Örnek, 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şlev, 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, hizmeti çalıştırmak 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ılır ve durdurulur).

Yürütülebilir dosya, hizmette ServiceBase Başlangıç'ı ilk kez çağırdığınızda türetilmiş sınıfın oluşturucusunu çağırır. Oluşturucu OnStart yürütülür çalıştırıldıktan 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. Oluşturucuda kaynak oluşturmak, hizmet kaynakları yayımladı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 Hizmete Başlat, Durdur, Duraklat, Devam veya özel komutlar geçirebilirsiniz. SCM, hizmetin Stop, Pause veya Continue komutlarını CanStop kabul edip etmediğini belirlemek için ve CanPauseAndContinue değerlerini kullanır. Durdurma, Duraklatma ve Devam Et, SCM'nin bağlam menülerinde 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. , CanStopCanShutdownveya CanPauseAndContinue isefalse, yöntemini uygulamış olsanız bile ilgili komut işleme yöntemi (örneğinOnStop) işlenmez.

SCM'nin ServiceController kullanıcı arabirimini kullanarak program aracılığıyla ne yaptığını yapmak için sınıfını kullanabilirsiniz. Konsolda kullanılabilen 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 , veya OnStopbaş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 RunServiceBase geçirilen nesnenin özelliği, bu hizmet için hizmet yükleyicisinin özelliğiyle eşleşmelidirServiceName.

Komutunu kullanarak sc create modern .NET'i hedefleyen hizmetleri yükleyebilir veya .NET Framework'ü hedefleyen hizmetleri yükleyebilirsiniz InstallUtil.exe .

Uyarı

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

Oluşturucular

Name Description
ServiceBase()

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

Alanlar

Name Description
MaxNameLength

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

Özellikler

Name Description
AutoLog

Olay günlüğünde Başlat, Durdur, Duraklat ve Devam komutlarının 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 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

Sisteme hizmeti 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

Name Description
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()

tarafından Componentkullanı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 Containertarafından Component sağlanan bir hizmeti temsil eden bir nesnesi döndürür.

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

Geçerli örneğin Type 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 Objectbasit 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 yapılması gereken eylemleri belirtir.

OnCustomCommand(Int32)

Türetilmiş bir sınıfta uygulandığında, OnCustomCommand(Int32) Hizmet Denetim Yöneticisi (SCM) hizmete özel bir komut geçirdiğinde yürütülür. Belirtilen parametre değerine sahip bir komut oluştuğunda yapılması gereken 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 yapılması gereken 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, sistem kapatma ile aynı olmayan askıya alma moduna geçtiklerinde dizüstü bilgisayarlar için geçerlidir.

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 yapılması gereken eylemleri belirtir.

OnStop()

Türetilmiş bir sınıfta uygulandığında, Service Control Manager (SCM) tarafından hizmete bir Stop komutu gönderildiğinde yürütülür. Bir hizmet çalışmayı durdurduğunda yapılması gereken eylemleri belirtir.

RequestAdditionalTime(Int32)

Bekleyen 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 denetim yöneticisine (SCM) hizmet için yürütülebilir dosyayı kaydeder.

Run(ServiceBase[])

Birden çok hizmet için yürütülebilir dosyayı 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

Name Description
Disposed

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

(Devralındığı yer: Component)

Şunlara uygulanır

Ayrıca bkz.