Описание программы
Программа называется SpamSmsProvider. Идея заключается в том, чтоб показать какие задачи можно решить с помощь событий в C#. У нас есть класс SpamSmsProvider который эмулирует отправку sms сообщений и есть вероятность, что сообщение будет отправлено с ошибкой. Именно для этого случая класс содержит событие SendFailed и все подписчики на это событие получат уведомление в случае неудачной отправки. Код содержит детальное пояснение, у кого возникнут вопросы, задавайте их в комментариях.
Пример инициализации событий
// пример события с помощью системного делеагата EventHandler public event EventHandler<SmsEventArgs> SendFailed2; // пример события с помощью произвольного делегата public event SpamSmsProviderHandler SendFailed; public delegate void SpamSmsProviderHandler(object sender, SmsEventArgs args);
Пример потокобезопасного вызова события
// потокобезопасный вызов события protected void OnSendFailed(object sender, SmsEventArgs args) { var handler = SendFailed; if (handler != null) { handler(this, args); } }
Пример подписки на событие с помощью лямбда выражений
/* подписываем с помощью лямбда выражения в этом случае отписаться от события невозможно */ ssp.SendFailed += (sender, a) => { Console.WriteLine(String.Format( "LAMBDA!!! Failed to send sms for {0}", a.Recepient)); };
Содержание архива
- демонстрационный файл (консольное приложение)
- файлы проекта на C# в среде Visual Studio 2015
dmytro