1
POCO C++
库学习和分析
--
通知和事?/p>
(四?/p>
5.
事件
Poco
中的事件和代理概念来自于
C#
。对于事件的使用者,也就是调用方来说,用法非常的简单?/p>
5.1
从例子说?/p>
首先让我们来看一个同步事件例子,然后再继续我们的讨论?/p>
[cpp]
1.
#include "Poco/BasicEvent.h"
2.
#include "Poco/Delegate.h"
3.
#include <iostream>
4.
5.
using
Poco::BasicEvent;
6.
using
Poco::Delegate;
7.
8.
class
Source
9.
{
10.
public
:
11.
BasicEvent<
int
> theEvent;
12.
void
fireEvent(
int
n)
13.
{
14.
theEvent(
this
, n);
15.
// theEvent.notify(this, n); // alternative syntax
16.
}
17.
};
18.
19.
class
Target
20.
{
21.
public
:
22.
void
onEvent(
const
void
* pSender,
int
& arg)
23.
{
24.
std::cout <<
"onEvent: "
<< arg << std::endl;
25.
}
26.
};
27.
28.
int
main(
int
argc,
char
** argv)
29.
{
30.
Source source;
31.
Target target;
32.
source.theEvent += Poco::delegate(&target, &Target::onEvent);
33.
source.fireEvent(42);
34.
source.theEvent -= Poco::delegate(&target, &Target::onEvent);