事件 Event 消息 Message

windows事件与消息:

  事件由用户(操作电脑的人)触发且只能由用户触发,

  操作系统能够感觉到由用户触发的事件,并将此事件转换为一个(特定的)消息发送到程序的消息队列中。

概念:  

  事件是客观存在,而消息往往是人为安排的。

event and event handlers:

  event handlers:event发生后,会通知event handlers,它们做相应的回调。

各种框架下事件的实现:

.net框架: 

  事件机制是通过代理类来实现的。当一个事件被触发时,由该事件的代理来通知(调用)处理该事件的相应方法。

C#:

 (1)将实际应用中需通过事件机制解决的问题对象注册到相应的事件处理程序上,表示今后当该对象的状态发生变化时,该对象有权使用它注册的事件处理程序。

 (2)当事件发生时,触发事件的对象就会调用该对象所有已注册的事件处理程序。

BOOST:

  [boost.signal]

  概念:信号(signal)(事件)与插槽(slot)(事件handler),当对应的信号被发出时,相关联的插槽们即被执行。

#include <boost/signal.hpp>
#include <iostream>   

void func1()
{
  std::cout << "Hello" << std::flush;
}   

void func2()
{
  std::cout << ", world!" << std::endl;
}   

int main()
{
  boost::signal<void ()> s;
  s.connect(1, func2);
  s.connect(0, func1);
  s();
}

 c++:

event (C++ Component Extensions)

The event keyword declares an event, which is a notification to registered subscribers (event handlers) that something of interest has occurred.

事件关键字声明了一个事件,这个事件是一个对event handler们的通知,然后某些回调会发生。

from MSDN:

  For example, clicking on a button or a menu item causes a message to be sent that this happened (message contains an ID).  Then there can be a message handler that catches the message and does something or there may not be and the message is just ignored.

时间: 2024-12-11 16:08:28

事件 Event 消息 Message的相关文章

【温故知新】c#事件event

从上一篇文章[温故知新]C#委托delegate可知,委托delegate和事件Event非常的相似,区别就是event关键字,给delegate穿上了个“马甲”. 让我们来看官方定义: 类或对象可以通过事件向其他类或对象通知发生的相关事情. 发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”. event 关键字用于在发行者类中声明事件. 定义非常明确,通过事件向其他类或对象通知发生的相关事情,用来实现的观察者模式. 还是通过之前的代码例子,看看声明delegate和ev

C#中的委托(Delegate)和事件(Event)

C#中的委托(Delegate)和事件(Event) 2007-11-30 11:40:00 分类: 把C#中的委托(Delegate)和事件(Event)放到现在讲是有目的的:给下次写的设计模式——观察者(Observer)有一个参考. 委托和事件应该是C#相较于C++等之前的非托管的语言提出的一个新的术语(term).“旧瓶装新酒”这样的描述似乎有些“贬义”,但确实是这样.委托也好,事件也好最初的起源是C/C++中的函数指针,关于函数指针的简单介绍可以参见我以前的一篇<C/C++中指向函数的

MaxCompute(原ODPS) 事件(Event)机制

摘要: 免费开通大数据服务:https://www.aliyun.com/product/odps 转自habai 什么是 MaxCompute事件机制 MaxCompute event 用于监控表和实例等MaxCompute资源(目前只用于监控表). 免费开通大数据服务:https://www.aliyun.com/product/odps 什么是MaxCompute 大数据计算服务(MaxCompute,原名ODPS)是一种快速.完全托管的TB/PB级数据仓库解决方案.MaxCompute向

μCOS-II系统之事件(event)的使用规则及MUTEX实例

*************************************************************************************************************************** 作者:EasyWave                                                时间:2014.05.31 类别:μC/OS-II-操作系统                                  声明:

ble协议栈cc2540x-1.3.2之通过key处理过程看任务、事件、消息机制

一   事件机制 每一个任务都会有很多种事件,包括系统消息.任务事件等等. 二   事件的触发启动 函数1:启动一个定时器.定时delaytime时间.之后触发TaskID的event事件.延时时间以ms为单位. osal_start_timerEx( TaskID, event,delaytime); 函数2:置 tasksEvents[]数组的事件标志位为1.系统轮询这个数组确定是否触发事件 osal_set_event( simpleBLEPeripheral_TaskID, SBP_ST

C#事件(event)解析

事件(event),这个词儿对于初学者来说,往往总是显得有些神秘,不易弄懂.而这些东西却往往又是编程中常用且非常重要的东西.大家都知道windows消息处理机制的重要,其实C#事件就是基于windows消息处理机制的,只是封装的更好,让开发者无须知道底层的消息处理机制,就可以开发出强大的基于事件的应用程序来. 先来看看事件编程有哪些好处. 在以往我们编写这类程序中,往往采用等待机制,为了等待某件事情的发生,需要不断地检测某些判断变量,而引入事件编程后,大大简化了这种过程: - 使用事件,可以很方

使用事件和消息队列实现分布式事务(转+补充)

虽然本文并非笔者原创,但是我们在非强依赖的事务中原理上也是采用这种方式处理的,不过因为没有仔细去总结,最近在整理和总结时看到了,故转载并做部分根据我们实际情况的完善和补充. 不同于单一架构应用(Monolith), 分布式环境下, 进行事务操作将变得困难, 因为分布式环境通常会有多个数据源, 只用本地数据库事务难以保证多个数据源数据的一致性. 这种情况下, 可以使用两阶段或者三阶段提交协议来完成分布式事务.但是使用这种方式一般来说性能较差, 因为事务管理器需要在多个数据源之间进行多次等待. 有一

μCOS-II系统之事件(event)的使用规则及Semaphore实例

*************************************************************************************************************************** 作者:EasyWave                                                时间:2014.05.31 类别:μC/OS-II-操作系统                                  声明:

μCOS-II系统之事件(event)的使用规则及Semaphore的互斥量用法

*************************************************************************************************************************** 作者:EasyWave                                                时间:2014.05.31 类别:μC/OS-II-操作系统                                  声明: