Мне нужна помощь, пытающаяся понять шаблон наблюдателя и делегатов. Я нашел этот код на другом веб-сайте, и я пытаюсь понять, что он на самом деле делает. Кто-нибудь может мне помочь.Шаблон наблюдателя и делегаты
Когда я выполняю код, я получаю оба сообщения «Сервер запущен и работает», а «Сервер не работает, мы работаем над этим, он скоро вернется». Я думаю, что получаю оба сообщения, потому что в Main есть сервер. ServerStatus = true; и server.ServerStatus = false. Однако, если я прокомментирую сервер.ServerStatus = true; и тогда я получаю сообщение «Сервер запущен и работает», но я ожидал увидеть только «Сервер не работает, мы работаем над этим, он скоро вернется». Может кто-нибудь объяснить? Susan
class Program
{
static void Main(string[] args)
{
Server server = new Server();
server.ServerStatusChanged += new EventHandler(ProcessServerStatus);
server.ServerStatus = true;
server.ServerStatus = false;
Console.Read();
}
public class Server
{
public event EventHandler ServerStatusChanged;
private bool _ServerStatus;
public bool ServerStatus
{
get { return this._ServerStatus; }
set {
if (this._ServerStatus == value) return; // Dont need to do anything;
if (this.ServerStatusChanged != null) // make sure the invocation list is not empty
ServerStatusChanged(value, new EventArgs()); // Firing Event
this._ServerStatus = value;
}
}
}
public static void ProcessServerStatus(object sender, EventArgs e)
{
bool status = (bool)sender;
if (status)
Console.WriteLine("Server is up and running");
else
Console.WriteLine("Server is down, We are working on it it will be back soon");
}
}
Это помечено Java, но я думаю, что код на самом деле является C#. –
Действительно, они получают {} set {}: s - это функция C#, а не Javas. Изменены теги. – Esko