C# 委托与事件
c#事件 委托:
1.类似观察者模式。
2.当某个对象(类),执行某个动作时,之前委托的事情会自动完成。
(如B,C订阅A的事件,当A执行某动作,B和C均会按照约定进行对应动作)
//使用步骤:
1.定义 delegate委托类,event 事件
//首领A:举杯委托
public delegate void RaiseEventHandler(string hand);
public class A
{
// 首领A:举杯事件
public event RaiseEventHandler RaiseEvent;
// 2.绑定事件对应的函数
// 举杯
public void Raise(string hand)
{
Console.WriteLine("首领A{0}手举杯", hand);
// 调用举杯事件,传入左或右手作为参数
if (RaiseEvent!=null)
{
RaiseEvent(hand);
}
}
// 3.编写约定
public class B
{
A a;
public B(A a){
this.a = a;
a.RaiseEvent += new RaiseEventHandler(a_RaiseEvent); // 订阅举杯事件
}
// 首领举杯时的动作
void a_RaiseEvent(string hand)
{
if (hand.Equals("左"))
{
Attack();
}
}
// 约定的攻击函数
public void Attack()
{
Console.WriteLine("部下B发起攻击,大喊:猛人张飞来也!");
}
}
// 4.测试
class Test{
static void Main(string[] args){
A a = new A(); // 定义首领A
B a = new B(a)
// 首领A左手举杯
a.Raise("左");
// 首领A右手举杯
//a.Raise("右");
// 由于B和C订阅了A的事件,所以无需任何代码,B和C均会按照约定进行动作。
}
}
委托用来执行一个委托所指向的函数
线程
是让你的程序非线性的运行,排除消息队列等概念,你可以简单理解为就是“同时”让软件做几个事情,就像你在睡觉的同时还在呼吸外加流口水做梦
原文:http://www.cnblogs.com/yinqixin/p/5056307.html