委托与事件,控制台显示不了
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace 委托与事件三
{
class Program
{
static void Main(string[] args)
{
/*订阅事件*/
MyTimerClass mc = new MyTimerClass();
ClassA ca = new ClassA();
mc.Elapsed+=new EventHandler(ca.TimerHandlerA);//委托形式
mc.Elapsed += ClassB.TimerHandlerB;//方法引用形式【实例方法与静态方法】
mc.Elapsed += delegate(object source, EventArgs e)//委托形式
{
Console.WriteLine("使用委托形式订阅事件!");
};
mc.Elapsed += (object source, EventArgs e) =>
{ Console.WriteLine("使用Lambda形式订阅事件!"); };
Thread.Sleep(2000);
mc.MyElapsed += ClassD.TimerHandlerD;
Thread.Sleep(2000);
}
}
/// <summary>
/// 发布者类
/// </summary>
public class MyTimerClass
{
//1.声明事件
public event EventHandler Elapsed;
//2.触发事件
private void OnOneSecond(object source,EventArgs args)
{
if (null != Elapsed)
{
Elapsed(source,args);
}
}
public delegate void MyEventHandler(object obj,MyTCEventArgs e);
public event MyEventHandler MyElapsed;
private void OnOneSecond1(object srouce,MyTCEventArgs e)
{
if (null != MyElapsed)
{
MyTCEventArgs mtcea = new MyTCEventArgs("Message form OnOneScound");
MyElapsed(srouce,mtcea);
}
}
}
class ClassA
{
public void TimerHandlerA(object obj, EventArgs e)
{
Console.WriteLine("ClassA handler called!");
}
}
class ClassB
{
public static void TimerHandlerB(object obj, EventArgs e)
{
Console.WriteLine("ClassB handler called!");
}
}
/// <summary>
/// 通过扩展EventArgs来传递数据
/// </summary>
public class MyTCEventArgs : EventArgs
{
public string Message;
public MyTCEventArgs(string s)
{
Message = s;
}
}
class ClassD
{
public static void TimerHandlerD(object obj, MyTCEventArgs e)
{
Console.WriteLine("ClassD Message:{0}",e.Message);
}
}
}
上面的代码怎么控制台显示不了输出内容