using System;
namespace testEventApp
{
public delegate void Class2_Event_Handler(object sender, string strEventArg);
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
public Class1()
{
Console.WriteLine ("Class1>>>创建一个Class1对象!");
}
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Class1 aClass1 = new Class1 ();
Class2 aClass2 = new Class2 (); //创建一个Class2对象
//将事件处理函数与Class2中的事件关联
aClass2.Class2_Event += new Class2_Event_Handler(aClass1.On_Class2Event );
//调用Class2中的方法,等待其触发事件
aClass2.Class2_Event_Riser ();
}
private void On_Class2Event(object sender, string strEventArg)
{ //Class2中事件发生时的处理函数
Console.WriteLine ("Class1>>>收到Class2中的事件:" +strEventArg);
if (strEventArg=="exit")
{
Class2 senderRef =( Class2)sender;
//取消事件处理函数与Class2中事件的关联
senderRef.Class2_Event -= new Class2_Event_Handler (this.On_Class2Event );
Console.WriteLine ("Class1>>>不再接收Class2的事件!输入exit退出!");
}
}
}
class Class2
{
public Class2()
{
Console.WriteLine ("Class2>>>创建一个Class2对象!");
}
//利用delegate,定义一个事件
public event Class2_Event_Handler Class2_Event;
//一个可以触发事件的方法
public void Class2_Event_Riser()
{
string strRead;
while(true)
{
Console.Write ("Class2>>>");
strRead = Console.ReadLine ();
if ( Class2_Event!=null )//当事件处理函数存在时
{
Console.WriteLine ("Class2>>>发送事件:"+strRead);
Class2_Event(this, strRead);//触发delegate中的事件处理函数
}
else if (strRead == "exit")
{
System.Environment .Exit (-1);
}
}
}
}
}
namespace testEventApp
{
public delegate void Class2_Event_Handler(object sender, string strEventArg);
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
public Class1()
{
Console.WriteLine ("Class1>>>创建一个Class1对象!");
}
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Class1 aClass1 = new Class1 ();
Class2 aClass2 = new Class2 (); //创建一个Class2对象
//将事件处理函数与Class2中的事件关联
aClass2.Class2_Event += new Class2_Event_Handler(aClass1.On_Class2Event );
//调用Class2中的方法,等待其触发事件
aClass2.Class2_Event_Riser ();
}
private void On_Class2Event(object sender, string strEventArg)
{ //Class2中事件发生时的处理函数
Console.WriteLine ("Class1>>>收到Class2中的事件:" +strEventArg);
if (strEventArg=="exit")
{
Class2 senderRef =( Class2)sender;
//取消事件处理函数与Class2中事件的关联
senderRef.Class2_Event -= new Class2_Event_Handler (this.On_Class2Event );
Console.WriteLine ("Class1>>>不再接收Class2的事件!输入exit退出!");
}
}
}
class Class2
{
public Class2()
{
Console.WriteLine ("Class2>>>创建一个Class2对象!");
}
//利用delegate,定义一个事件
public event Class2_Event_Handler Class2_Event;
//一个可以触发事件的方法
public void Class2_Event_Riser()
{
string strRead;
while(true)
{
Console.Write ("Class2>>>");
strRead = Console.ReadLine ();
if ( Class2_Event!=null )//当事件处理函数存在时
{
Console.WriteLine ("Class2>>>发送事件:"+strRead);
Class2_Event(this, strRead);//触发delegate中的事件处理函数
}
else if (strRead == "exit")
{
System.Environment .Exit (-1);
}
}
}
}
}