Дефиниция на събития в C#:
Клас или обект може да уведоми други класове или обекти за случилото се чрез събития. Класът, който изпраща (или причинява) събитието, се нарича "емитент", а класът, който получава (или обработва) събитието, се нарича "абонат".
Събитията имат следните характеристики:
- Издателят определя кога да се повиши събитието, а абонатът определя какво действие да извърши в отговор на събитието.
- Едно събитие може да има няколко абонати. Абонатът може да обработва множество събития от множество емитенти.
- Събития без абонати никога не се обявяват.
- Събитията често се използват, за да информират потребителите за действия, като кликване на бутони или действия при избор на меню в графични потребителски интерфейси.
- Ако едно събитие има няколко абонати, няколко обработващи събития се извикват едновременно при повишение на събитието. За да извиквате събития асинхронно, вижте Методи за синхронизация на извикване чрез асинхронност.
- Могат да се използват нишки за синхронизация на събития.
Ключовата дума събитие се използва за обявяване на събития в класа издател.
Линк към MS:Входът към хиперлинк е видим.
Всъщност няма разлика между метод на писане на събития А и метод на писане Б!
Можете да се обърнете към:Входът към хиперлинк е видим.
EventHandler<T>Представлява метод, който приема два параметъра (подател на обекта, TEventArgs e) и връща тип void. където TEventArgs трябва да е тип, произлизащ от класа EventArgs. Последният параметър се използва за съхранение на параметрите, необходими за събитието.
EventArgsе базовият клас на клас, който съдържа данни за събития, които не съдържат данни за събития, и се използва от събития, които не предават информация за състоянието на обработката на събития при повдигане на събитието. Ако обработвачът на събития се нуждае от информация за състоянието, приложението трябва да изведе клас от този клас, за да съхранява данните.
Volatile.Read .NET 4.0 не се поддържа
// Резюме: Препратките към обекти се четат от зададеното поле. Когато е необходим в системата, ще бъде поставена бариера в паметта, която да предотврати пренареждането на операциите в паметта, както е показано по-долу: Ако този метод се появи в кода след изпълнение на четене/запис, процесорът не може да го премести преди този метод. // Параметри: Местоположение: Полета за четене. // Типови параметри: T: Типът поле, което трябва да се чете. Това трябва да е референтният тип, а не стойностният тип. // Резултати от връщането: Прочети към референцията Т. Тази референция се записва от всеки процесор в компютъра, независимо от броя на процесорите или състоянието на кеша на процесора. [Договор за надеждност(Консистентност.НеКорумпираноСъстояние, Cer.Success)] [СигурностБезопасностКритична] [TargetedPatchingOptOut("Производителността е критична за инлайн през границите на NGen изображения")] публичен статичен T Read<T>(реф. T location), където T : клас;
|