servicesubject.cs
来自「Oracle Service Manager」· CS 代码 · 共 87 行
CS
87 行
using System;
using System.Collections;
using System.Diagnostics;
using System.ServiceProcess;
namespace kae.ServiceStatePublisher
{
/// <summary>
/// ServiceSubject is the publisher establishing the client contract or interface. ServiceSubject sends a notification to its observers, or subscribers, when its state changes.
/// </summary>
/// <remarks>
/// ServiceSubject is part of the Observer Pattern implementation for the ServiceStatePublisher library. The .NET Framework supports this pattern through its built-in delegate and event mechanism.
/// For more information on the state pattern see <i>Design Patterns: Elements of Reusable Code</i> by Gamma, et al.
/// </remarks>
public class ServiceSubject : ServiceContext
{
public event EventHandler ServerChanged;
public event EventHandler ServiceChanged;
public event EventHandler StateChanged;
private string _serverName;
public ServiceSubject() : base() { }
public ServiceSubject( ServiceController service)
{
Controller = service;
}
public virtual string ServerName
{
get { return _serverName; }
set
{
_serverName = value;
OnServerChanged( EventArgs.Empty);
if (Controller != null && _serverName != Controller.MachineName)
Controller = null;
}
}
public override ServiceController Controller
{
get { return _controller; }
set
{
_controller = value;
_state = QueryServiceState();
OnServiceChanged( EventArgs.Empty);
}
}
public override ServiceState State
{
get { return _state; }
set
{
_state = value;
OnStateChanged( EventArgs.Empty);
}
}
public virtual void RefreshServices()
{
OnServerChanged( EventArgs.Empty);
}
protected virtual void OnServerChanged( System.EventArgs e)
{
if (ServerChanged != null)
ServerChanged( this, e);
}
protected virtual void OnServiceChanged( System.EventArgs e)
{
if (ServiceChanged != null)
ServiceChanged( this, e);
}
protected virtual void OnStateChanged( System.EventArgs e)
{
if (StateChanged != null)
StateChanged( this, e);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?