2 Nisan 2018 Pazartesi

ServiceBase Sınıfı

Giriş
Şu satırı dahil ederiz.
using System.ServiceProcess;
Sınıfın iskeleti şöyle.
partial class MainService : ServiceBase
{
  public MainService()
  {
    InitializeComponent();
  }

  protected override void OnStart(string[] args)
  {
    base.OnStart();
  }

  protected override void OnStop()
  {
    base.OnStop();
  }

  protected override void OnShutdown()
  {
    base.OnShutdown();
  }
}
Constructor
Şöyle yaparız. InitializeComponent metodunu çağırmak önemli!
public MainService()
{
  InitializeComponent();
}
OnCustomCommand metodu
Şöyle yaparız.
protected override void OnCustomCommand(int command)
{
  if (command == SomeNumber)
  {...}
  base.OnCustomCommand(command);
}
OnStart metodu
OnStart aslında Main metoduna çok benziyor.
static void Main(string[] args)
{...}
ile OnStart aynı şeyler.
protected override void OnStart(string[] args)
{...}
Ancak OnStart 30 saniye içinde işini bitirmeli yoksa işletim sistemi servisi başlatmaz. Yoksa şu hatayı alırız.
Erro 1053: The service did not respond to the start or control request in timely fashion.
Yani OnStart metodu içinde thread başlatılabilir.

Örnek
Şöyle yaparız.
protected override void OnStart(string[] args)
{
  Thread t = new Thread(...);
  t.Start();
}

OnStop metodu
Şöyle yaparız.
protected override void OnStop()
{...}

Hiç yorum yok:

Yorum Gönder