Описание программы
Программа называется 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
Телеграм
-