
- •1. Сборщик мусора и управление ресурсами
- •2. Жизненный цикл объектов
- •3. Неуправляемый код и указатели
- •4. Строки и строковый пул
- •5. Обобщенные типы, ограничения в параметрах обобщенных типов, типы допускающие null значение
- •6. Тип Type и пространство System.Reflection
- •7. Создание объектов с помощью рефлексии, вызов методов объектов средствами рефлексии
- •8. Атрибуты, жизненный цикл объекта атрибута
- •9. Специальные атрибуты net.Framework и ограничения пользовательских атрибутов
- •10. Метаданные сборок, структура сборок, домены приложений
- •11. Многопоточное программирование. Виды многопоточности, обеспечение многопоточности в net.Framework, виды блокировки
- •12. Класс Thread, логические и физические потоки выполнения, жизненный цикл потока выполнения
- •13. Класс монитора, конструкция lock()
- •14. Атомарная синхронизация и класс Interlocked
- •15. Класс ReaderWriterLock, пул потоков
- •16. Классы WaitHandle и производные от него: ManualResetEvent, AutoResetEvent, Mutex
- •17. Высокоуровневые средства распараллеливания задач, класс Task
- •18. Свойства и методы класса Task
- •19. Делегаты, цепочка вызова
- •Групповая адресация
- •20. Асинхронный вызов с помощью объекта делегата
- •IAsyncResult
- •21. События, обратный вызов, типовая схема реализации события
- •22. Лямбда-выражения, замыкание лямбда-выражений
- •23. Деревья выражений, типы деревьев. Создание деревьев выражений
- •24. Технология ado.Net, архитектура, модель с постоянным соединением и с рассоединением
- •Linq to DataSet
- •Linq to sql
- •Платформа ado.Net Entity Framework
- •Службы wcf Data Services
- •25)Понятие поставщика данных и его составные части в ado.Net. Класс соединения, итератора, команды.
- •26. Технология объектно-реляционного связывания, персистентные объекты, на примере одной из технологии (Linq to sql, Linq to Entities, nHibernate)
- •Entity Framework
- •27. Linq to Objects: архитектура технологии и возможности, понятие итератора, создание Linq запросов
- •28. Средства распараллеливания выполнения запросов plinq.
- •29. Основы wcf. Основные понятия, применение. Контракты данных, привязки. Архитектура сервис-ориентированных систем.
- •1) Библиотека с интерфейсом
- •2) Сервер – консольное приложение
- •3) Клиент – консольное приложение
- •30. Структура проекта с использованием wcf сервисов. Интерфейсы сервиса, атрибуты для обозначения методов сервиса и контрактов данных.
- •1) Библиотека с интерфейсом
- •2) Сервер – консольное приложение
- •3) Клиент – консольное приложение
- •31. Методы и свойства прокси-объекта на стороне клиента.
- •32. Развертывание wcf сервисов.
IAsyncResult
Представляет состояние асинхронной операции. Его используют для отслеживания выполнения асинхронного вызова.
Свойства:
IsCompleted – Возвращает значение, показывающее, выполнена ли асинхронная операция.
AsyncCallback
Ссылается на метод, который должен вызываться при завершении соответствующей асинхронной операции.
Для обработки результатов асинхронной операции в отдельном потоке используется делегат AsyncCallback. Делегат AsyncCallback представляет метод обратного вызова, который вызывается при завершении асинхронной операции.Метод обратного вызова принимает параметр IAsyncResult, который впоследствии используется для получения результатов асинхронной операции.
Параметр object
Это пользовательский объект, который передает данные в метод обратного вызова.
четыре основных способа использования методов BeginInvoke и EndInvoke для выполнения асинхронных вызовов. После вызова метода BeginInvoke можно делать следующее.
Выполнить какие-либо операции, а затем вызвать метод EndInvoke для блокировки потока до тех пор, пока вызов не завершится.
Получить объект WaitHandle с помощью свойства IAsyncResult.AsyncWaitHandle, использовать метод WaitOne для блокирования выполнения до получения сигналаWaitHandle, а затем вызвать метод EndInvoke.
Периодически опрашивать интерфейс IAsyncResult, возвращаемый методом BeginInvoke, для определения момента завершения асинхронного вызова, и затем вызвать метод EndInvoke.
Передать в метод BeginInvoke делегат для метода обратного вызова. Этот метод выполняется для потока ThreadPool после выполнения асинхронного вызова.Метод обратного вызова вызывает метод EndInvoke.
21. События, обратный вызов, типовая схема реализации события
События позволяют классу или объекту уведомлять другие классы или объекты о возникновении каких-либо ситуаций. Класс, отправляющий (или вызывающий) событие, называется издателем, а классы, принимающие (илиобрабатывающие) событие, называются подписчиками.
В C# в стандартном приложении Windows Forms или веб-приложении пользователь подписывается на события, вызываемые элементами управления, такими как кнопки и поля со списками.
События имеют следующие свойства.
Издатель определяет момент вызова события, подписчики определяют предпринятое ответное действие.
У события может быть несколько подписчиков. Подписчик может обрабатывать несколько событий от нескольких издателей.
События, не имеющие подписчиков, никогда не возникают.
Обычно события используются для оповещения о действиях пользователя, таких как нажатия кнопок или выбор меню и их пунктов в графическом пользовательском интерфейсе.
Если событие имеет несколько подписчиков, то при его возникновении происходит синхронный вызов обработчиков событий. Сведения об асинхронном вызове событий см. в разделе Асинхронный вызов синхронных методов.
В библиотеке классов .NET Framework в основе событий лежит делегат EventHandler и базовый класс EventArgs.
Пример объявления события: public event EventHandler Changed;
Модель событий CLR основана на делегатах. Они обеспечивают реализацию механизма обратного вызова, безопасную по отношению к типам. Методы обратного вызова (callback methods) позволяют объекту получать уведомления, на которые он подписался
Достоинства:
• Возможность динамического изменения функциональности (подключения и отключения плагинов/модулей при работе программы).
• Возможность неограниченного количества вариантов вызываемой функции без изменения базового (в данном контексте) кода.
• Возможность вставки вызываемой функции не только для альтернативного поведения, но и в качестве ещё одной (промежуточной) подпрограммы — обычно для отслеживания операций или изменения параметров для следующей (вызываемой) функции. Таких независимых «дополнительных звеньев» в цепочке вызовов может быть сколько угодно.
• Поддержка функций обратного вызова в большинстве современных языков программирования общего назначения.
Недостатки:
• Уменьшение производительности, связанной с дополнительными вызовами «обратной функции» — прямо пропорционально «стоимости вызова функции» в среде выполнения и количеству дополнительных вызовов при работе программы.
• Ухудшение читаемости исходного кода — для понимания алгоритма программы необходимо отслеживать всю цепочку вызовов.
Типовая схема реализации события
1)Определение типа для хранения всей дополнительной информации, передаваемой получателем уведомления о событии. Этот класс должен наследоваться от EventArgs. Если вам не надо ничего передавать то можно воспользоваться EventArgs.Empty.
2)Определение члена-события в классе ответственном за него (mailmanager) . public event EventHandler<YourEventArgs> EventName;
3)Определение метода ответственного за уведобление о событии. Внутри него вызов
EventName(this,YourEventArgs);
4)Определение метода, преобразующего входную информацию в желаемое событие
Он ответственнем за создание YourEventArgs и передачу его методу предыдушего пункта .