Microsoft.Cpp.Chengdacaizi
天行健,君子以自强不息 地势坤,君子以厚德载物
关于C#事件
1
/**/
/*
2
* 该程序是介绍关于事件的处理过程,使用c#提供的规范化模式
3
* 出版社和订阅者的模式,出版社要定义事件,订阅者来定义响应事件函数
4
*
5
*/
6
using
System;
7
using
System.Collections.Generic;
8
using
System.Text;
9
10
class
PubEventArgs : EventArgs
//
事件传递参数类
11
{
12
private
readonly
string
m_magazineName;
13
private
readonly
DateTime m_pubDate;
14
public
PubEventArgs(
string
magazineName, DateTime pubDate)
15
{
16
m_magazineName
=
magazineName;
17
m_pubDate
=
pubDate;
18
}
19
public
string
magazineName
20
{
21
get
{
return
m_magazineName; }
22
}
23
public
DateTime pubDate
24
{
25
get
{
return
m_pubDate; }
26
}
27
}
28
29
class
Publisher
30
{
31
public
delegate
void
PubComputerEventHandler(
object
sender, PubEventArgs e);
//
定义事件委托
32
public
delegate
void
PubLifeEventHandler(
object
sender, PubEventArgs e);
33
public
event
PubComputerEventHandler PubComputer;
34
public
event
PubLifeEventHandler PubLife;
//
根据委托类型定义事件
35
protected
virtual
void
OnPubComputer(PubEventArgs e)
/**/
/*
触发事件
*/
36
{
37
PubComputerEventHandler handler
=
PubComputer;
38
if
(handler
!=
null
)
39
{
40
/**/
/*
实际上触发的是这个委托链
*/
41
handler(
this
, e);
42
}
43
}
44
protected
virtual
void
OnPubLife(PubEventArgs e)
45
{
46
PubLifeEventHandler handler
=
PubLife;
47
if
(handler
!=
null
)
48
{
49
handler(
this
, e);
50
}
51
}
52
public
void
issueComputer(
string
magazineName, DateTime pubDate)
//
触发方法
53
{
54
Console.WriteLine(
"
发行
"
+
magazineName);
55
OnPubComputer(
new
PubEventArgs(magazineName,pubDate));
56
}
57
public
void
issueLife(
string
magazineName, DateTime pubDate)
58
{
59
Console.WriteLine(
"
发行
"
+
magazineName);
60
OnPubLife(
new
PubEventArgs(magazineName, pubDate));
61
}
62
}
63
64
class
Subscriber
65
{
66
private
string
name;
67
public
Subscriber(
string
name)
68
{
69
this
.name
=
name;
70
}
71
public
void
Receive(
object
sender ,PubEventArgs e)
72
{
73
Console.WriteLine(e.pubDate
+
"
"
+
name
+
"
已经收到
"
+
e.magazineName);
74
}
75
}
76
77
namespace
CSEventTestProc
78
{
79
class
Program
80
{
81
static
void
Main(
string
[] args)
82
{
83
Publisher pub
=
new
Publisher();
84
Subscriber zs
=
new
Subscriber(
"
张三
"
);
85
Subscriber ls
=
new
Subscriber(
"
李四
"
);
86
pub.PubComputer
+=
new
Publisher.PubComputerEventHandler(zs.Receive);
87
pub.PubComputer
+=
new
Publisher.PubComputerEventHandler(ls.Receive);
88
pub.PubLife
+=
new
Publisher.PubLifeEventHandler(ls.Receive);
89
90
pub.issueComputer(
"
电脑杂志
"
, Convert.ToDateTime(
"
2010-12-24
"
));
91
pub.issueLife(
"
生活杂志
"
, Convert.ToDateTime(
"
2010-12-24
"
));
92
93
Console.WriteLine(
"
一年后……
"
);
94
pub.PubComputer
-=
new
Publisher.PubComputerEventHandler(ls.Receive);
95
pub.issueComputer(
"
电脑杂志
"
, Convert.ToDateTime(
"
2010-12-24
"
));
96
pub.issueLife(
"
生活杂志
"
, Convert.ToDateTime(
"
2010-12-24
"
));
97
}
98
}
99
}
100
posted on 2011-01-09 09:20
成大才子
阅读(144)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
Powered by:
C++博客
Copyright © 成大才子
<
2011年1月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
导航
C++博客
首页
新随笔
联系
聚合
管理
统计
随笔 - 16
文章 - 1
评论 - 4
引用 - 0
公告
关于更多关于成大才子,请访问http://hi.baidu.com/成大才子
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔档案
2011年2月 (1)
2011年1月 (5)
2010年8月 (1)
2010年7月 (1)
2010年6月 (5)
2009年3月 (3)
文章分类
ACM(1)
(rss)
文章档案
2010年6月 (1)
链接
POJ
成大才子之百度空间
搜索
最新评论
1. re: poj 1101
@rayafjyblue
呵呵,好像不是那个原因。
--caizi
2. re: poj 1101
数组开78大概是因为字符串数组的每一行都有个‘\0’吧,所以要大一点。。。。。偶也是菜鸟。。。。
--rayafjyblue
3. re: 北航 1066 求最长公共子学列
很好的小题。
--成大才子
4. re: pku 3705
你就是传说中的成大才子??
久仰久仰
--NightMare
阅读排行榜
1. poj 1101(692)
2. linux 下获取系统函数的方法(661)
3. csharp静态构造器(650)
4. poj 3628(307)
5. 关于this索引器(290)
评论排行榜
1. poj 1101(2)
2. pku 3705(1)
3. 大早晨的~呵呵,附上1154(0)
4. poj 2726(0)
5. 北航 1066 最长公共子序列的长度(0)