示例#1
0
        //Этап 3: Определение метода, ответственного за уведомление зарегистрированных объектов о событии
        //(Для изолированного класса метод будет закрытый и невиртуальный)
        protected virtual void OnNewMail(NewMailEventArgs e)
        {
            ////для синхронизации потоков
            ////EventHandler<NewMailEventArgs> temp = newMail;//возможна оптимизация компилятора!
            //EventHandler<NewMailEventArgs> temp = Interlocked.CompareExchange(ref NewMail, null, null);
            ////CompareExchange изменяет ссылку temp на null, если newMail и не трогает ее в противном случае

            //Потокобезопасный вызов события оставлен на усмотрение разработчиков
            if (NewMail != null)
            {
                // может быть вызвано исключение NullReferenceException в том случае,
                // если обработчик был удален из списка уже после проверки
                NewMail(this, e);
            }
        }
示例#2
0
 //MailManager вызывает этот метод для уведомления
 //объекта Fax о прибытии нового почтового сообщени
 private void SmsMsg(Object sender, NewMailEventArgs eventArgs)
 {
     Console.WriteLine("Smsing mail message:");
     Console.WriteLine("From = {0}, To = {1}, Subject = {2}", eventArgs.From, eventArgs.To, eventArgs.Subject);
 }