stringtranslate.com

Событие (вычисление)

В программировании и разработке программного обеспечения событие — это действие или явление, распознаваемое программным обеспечением , часто происходящее асинхронно из внешней среды, которое может быть обработано программным обеспечением. Компьютерные события могут быть сгенерированы или инициированы системой, пользователем или другими способами. Обычно события обрабатываются синхронно с потоком программы . То есть программное обеспечение может иметь одно или несколько выделенных мест, где обрабатываются события, часто цикл событий .

Пользователь может быть источником события. Пользователь может взаимодействовать с программным обеспечением через периферийные устройства компьютера , например, печатая на клавиатуре или щелкая мышью. Другим источником является аппаратное устройство, такое как таймер . Программное обеспечение также может запускать собственный набор событий в цикл событий, например, сообщая о завершении задачи. Программное обеспечение, которое изменяет свое поведение в ответ на события, называется событийно-управляемым , часто с целью быть интерактивным .

Описание

Системы, управляемые событиями, обычно используются, когда есть некоторая асинхронная внешняя активность, которую необходимо обработать программе, например, нажатие пользователем кнопки мыши. Система, управляемая событиями, обычно запускает цикл событий , который продолжает ожидать таких действий, например, ввода с устройств или внутренних сигналов тревоги. Когда происходит что-то из этого, она собирает данные о событии и отправляет событие в программное обеспечение обработчика событий , которое будет с ним работать.

Программа может игнорировать события, и могут быть библиотеки для отправки события нескольким обработчикам, которые могут быть запрограммированы на прослушивание определенного события. Данные, связанные с событием, как минимум указывают, какой это тип события, но могут включать в себя и другую информацию, например, когда оно произошло, кто или что вызвало его возникновение, а также дополнительные данные, предоставленные источником события обработчику о том, как событие должно быть обработано.

События обычно используются в пользовательских интерфейсах, где действия во внешнем мире (такие как щелчки мыши, изменение размера окна, нажатия клавиш и сообщения от других программ) обрабатываются программой как последовательность событий. Программы, написанные для многих оконных сред, состоят преимущественно из обработчиков событий.

События также могут использоваться на уровне набора инструкций , где они дополняют прерывания . По сравнению с прерываниями, события обычно реализуются синхронно: программа явно ожидает, пока событие будет сгенерировано и обработано (обычно путем вызова инструкции, которая отправляет следующее событие), тогда как прерывание может потребовать немедленного обслуживания.

События, созданные пользователем

Существует множество ситуаций или событий, которые программа или система может генерировать или на которые она может реагировать. Некоторые распространенные события, генерируемые пользователем, включают:

События мыши

Указывающее устройство может генерировать ряд программно распознаваемых жестов указывающего устройства . Мышь может генерировать ряд событий мыши, таких как перемещение мыши (включая направление перемещения и расстояние), нажатие левой/правой кнопки мыши вверх/вниз [1] и движение колесика мыши или комбинация этих жестов. Например, двойные щелчки обычно выбирают слова и символы в пределах границы, а тройные щелчки выбирают целые абзацы.

События клавиатуры

Нажатие клавиши на клавиатуре или комбинации клавиш генерирует событие клавиатуры, позволяя текущей запущенной программе реагировать на введенные данные, например, на то, какую клавишу/клавиши нажал пользователь. [1]

События джойстика

Перемещение джойстика генерирует аналоговый сигнал XY. Они часто имеют несколько кнопок для запуска событий. Некоторые геймпады для популярных игровых приставок используют джойстики.

События сенсорного экрана

События, генерируемые с помощью сенсорного экрана, обычно называются сенсорными событиями или жестами .

События устройства

События на устройстве включают в себя действия, совершаемые устройством или по отношению к нему, такие как встряхивание, наклон, вращение или перемещение.

Модель делегирования событий

Модель делегирования событий. clickme— это источник событий (в данном примере — кнопка), содержащий список слушателей.

Распространенным вариантом в объектно-ориентированном программировании является модель событий делегата , которая предоставляется некоторыми графическими пользовательскими интерфейсами . Эта модель основана на трех сущностях:

Кроме того, модель требует, чтобы:

C# использует события как специальные делегаты, которые могут быть запущены только классом, который их объявляет. Это позволяет достичь лучшей абстракции , например: [2]

делегат void Notifier ( строка отправитель );    класс Модель { public event Notifier notifyViews ; public void Change () { ... notifyViews ( "Модель" ); } }            class View1 { public View1 ( Модель model ) { model . notifyViews += new Notifier ( this . Update1 ); }           void Update1 ( string sender ) { Console . WriteLine ( $"{sender} был изменен во время обновления" ); } }      class View2 { public View2 ( Модель model ) { model . notifyViews += new Notifier ( this . Update2 ); }            void Update2 ( string sender ) { Console . WriteLine ( $"{sender} был изменен" ); } }      класс Test { static void Main () { Модель model = new Model ();           новый Вид1 ( модель ) ; новый Вид2 ​​( модель ); модель.Изменить ( ); } }     

Обработчик событий

В компьютерном программировании обработчик событий может быть реализован с помощью подпрограммы обратного вызова , которая обрабатывает входные данные, полученные в программе (называемой прослушивателем в Java и JavaScript [3] ). Каждое событие представляет собой фрагмент информации уровня приложения из базовой среды , обычно набора инструментов GUI . События GUI включают нажатия клавиш , движение мыши , выбор действий и истечение таймеров . На более низком уровне события могут представлять доступность новых данных для чтения файла или сетевого потока. Обработчики событий являются центральной концепцией в программировании, управляемом событиями .

События создаются фреймворком на основе интерпретации входных данных более низкого уровня, которые сами могут быть событиями более низкого уровня. Например, движения мыши и щелчки интерпретируются как выбор меню. События изначально возникают из действий на уровне операционной системы, таких как прерывания, генерируемые аппаратными устройствами, инструкции программного прерывания или изменения состояния при опросе . На этом уровне обработчики прерываний и обработчики сигналов соответствуют обработчикам событий.

Созданные события сначала обрабатываются диспетчером событий в рамках фреймворка. Обычно он управляет связями между событиями и обработчиками событий и может ставить в очередь обработчики событий или события для последующей обработки. Диспетчеры событий могут вызывать обработчики событий напрямую или ждать, пока события будут выведены из очереди с информацией об обработчике для выполнения.

Уведомление о событии

Уведомление о событиях — термин, используемый в сочетании с программным обеспечением для связи с приложениями, которые генерируют небольшие сообщения («события»), с приложениями, которые отслеживают соответствующие условия и могут выполнять действия, запускаемые событиями.

Уведомление о событиях является важной функцией в современных системах баз данных (используется для информирования приложений о возникновении отслеживаемых ими условий), современных операционных системах (используется для информирования приложений о том, когда им следует предпринять какие-либо действия, например обновить окно) и современных распределенных системах, где производитель события может находиться на другой машине, чем потребитель или потребители. Платформы уведомления о событиях обычно проектируются таким образом, что приложению, производящему события, не нужно знать, какие приложения будут их потреблять или даже сколько приложений будут отслеживать поток событий.

Уведомление о событиях иногда используется как синоним термина «публикация-подписка» , который относится к одному классу продуктов, поддерживающих уведомление о событиях в сетевых настройках. Модель виртуальной синхронности иногда используется для наделения систем уведомления о событиях и систем «публикация-подписка» более высокими гарантиями отказоустойчивости и согласованности.

Смотрите также

Ссылки

  1. ^ ab События мыши и клавиатуры в Windows Forms. Microsoft. Получено 12 февраля 2008 г.
  2. ^ Мессенбёк, Ханспетер (25 марта 2002 г.). «Расширенный C#: переменное количество параметров» (PDF) . Институт системного программного обеспечения, Университет Иоганна Кеплера в Линце, Факультет информатики. п. 26 . Проверено 5 августа 2011 г.
  3. ^ "EventTarget.addEventListener() - Веб-API | MDN". developer.mozilla.org . 11 марта 2024 г.

Внешние ссылки