Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Event_Delegate
{
class Program
{
static void Main(string[] args)
{
A a = new A(); //定义首领A
B b = new B(a);
a.Raise("左");
Console.ReadLine();
//====
var test = new Heater();
test.Onboiled += TestOnboiled;
test.Onboiled += TestOnboiled;
test.Begin();
Console.ReadKey();
}
static void TestOnboiled(object sender, EventArgs e)
{
Console.WriteLine("Hello 事件被调用");
}
}
public delegate void RaiseEventHandler(string hand);
/// <summary>
/// 首领A
/// </summary>
public class A
{
/// <summary>
/// 首领A举杯事件
/// </summary>
public event RaiseEventHandler RaiseEvent;
public void Raise(string hand)
{
Console.WriteLine("首领A举杯");
//调用举杯事件,传入左或右手作为参数
if (RaiseEvent != null)
{
RaiseEvent(hand);
}
}
}
/// <summary>
/// 部下B
/// </summary>
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("左"))
{
Console.WriteLine("部下B发起攻击 ");
}
}
}
}
Client_1.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace Event_Delegate
{
class Client_1
{
}
public class Heater
{
public event EventHandler Onboiled;
private void RasieBoiledEvent()
{
if (Onboiled == null)
{
Console.WriteLine("加热完成,处理订阅事件为空");
}
else
{
Onboiled(this,new EventArgs());
}
}
private Thread heatThread;
public void Begin()
{
heatTime = 5;
heatThread = new Thread(new ThreadStart(Heat));
heatThread.Start();
Console.WriteLine("加热器已经开启",heatTime);
}
private int heatTime;
private void Heat()
{
while (true)
{
Console.WriteLine("加热还需要{0} 秒",heatTime);
if (heatTime == 0)
{
RasieBoiledEvent();
return;
}
heatTime--;
Thread.Sleep(1000);
}
}
}
}