[code=Cusing System;//谁能帮我把下面的代码改变串成一个console程序呢?谢谢。代码里面的代码可能不是像下面这样在一个类里面的哟。可能缺少一些代码,有挑战性的。public delegate void TestEventDelegate(object sender, System.EventArgs e);public class EventSource
{
public event TestEventDelegate TestEvent;
private void RaiseTestEvent()
{
//safely invoke an event
TestEventDelegate temp = TestEvent; if (temp != null)
{
temp(this, new System.EventArgs());
}
}
}public class EventReceiver
{
public void ReceiveTestEvent(object sender, System.EventArgs e)
{
System.Console.Write("event received from ");
System.Console.WriteLine(sender.ToString());
} public void Subscribe(EventSource source)
{
TestEventDelegate temp = new TestEventDelegate(ReceiveTestEvent);
source.TestEvent += temp;
} public void UnSubscribe(EventSource source)
{
TestEventDelegate temp = new TestEventDelegate(ReceiveTestEvent);
source.TestEvent -= Temp;
}
}public class EventSource2
{
private TestEventDelegate TestEventHandlers;
public event TestEventDelegate TestEvent
{
add
{
lock (TestEventHandlers)
{
TestEventHandlers += value;
}
}
remove
{
lock (TestEventHandlers)
{
TestEventHandlers -= value;
}
}
}
private void RaiseTestEvent()
{
//safely invoke an event
TestEventDelegate temp = TestEventHandlers; if (temp != null)
{
temp(this, new System.EventArgs());
}
}
}
[/code]
{
public event TestEventDelegate TestEvent;
private void RaiseTestEvent()
{
//safely invoke an event
TestEventDelegate temp = TestEvent; if (temp != null)
{
temp(this, new System.EventArgs());
}
}
}public class EventReceiver
{
public void ReceiveTestEvent(object sender, System.EventArgs e)
{
System.Console.Write("event received from ");
System.Console.WriteLine(sender.ToString());
} public void Subscribe(EventSource source)
{
TestEventDelegate temp = new TestEventDelegate(ReceiveTestEvent);
source.TestEvent += temp;
} public void UnSubscribe(EventSource source)
{
TestEventDelegate temp = new TestEventDelegate(ReceiveTestEvent);
source.TestEvent -= Temp;
}
}public class EventSource2
{
private TestEventDelegate TestEventHandlers;
public event TestEventDelegate TestEvent
{
add
{
lock (TestEventHandlers)
{
TestEventHandlers += value;
}
}
remove
{
lock (TestEventHandlers)
{
TestEventHandlers -= value;
}
}
}
private void RaiseTestEvent()
{
//safely invoke an event
TestEventDelegate temp = TestEventHandlers; if (temp != null)
{
temp(this, new System.EventArgs());
}
}
}
[/code]
using System.Collections.Generic;
using System.Text;namespace Sort
{
class Program
{
static void Main(string[] args)
{ EventSource event1 = new EventSource();
EventReceiver evr=new EventReceiver();
evr.Subscribe(event1);//添加事件
event1.AddandRemoveEvent();
evr.UnSubscribe(event1);//移除事件
event1.AddandRemoveEvent();
Console.Read();
}
}
public delegate void TestEventDelegate(object sender, System.EventArgs e); public class EventSource//事件源类1
{
public event TestEventDelegate TestEvent;//事件定义
private void RaiseTestEvent()
{
//safely invoke an event
TestEventDelegate temp = TestEvent; if (temp != null)
{
temp(this, new System.EventArgs()); } }
//winform或webform中可能是通过一个按钮事件或者某个其它控件事件响应,这里只是简单的用了一个方法
public void AddandRemoveEvent()
{
RaiseTestEvent();
}
} public class EventReceiver
{
public void ReceiveTestEvent(object sender, System.EventArgs e)
{
System.Console.Write("event received from ");
System.Console.WriteLine(sender.ToString());
} public void Subscribe(EventSource source)
{
TestEventDelegate temp = new TestEventDelegate(ReceiveTestEvent);
source.TestEvent += temp; } public void UnSubscribe(EventSource source)
{
TestEventDelegate temp = new TestEventDelegate(ReceiveTestEvent);
source.TestEvent -= temp;
}
} public class EventSource2//事件源类2与事件源类1基本相同
{
private TestEventDelegate TestEventHandlers;
public event TestEventDelegate TestEvent//事件定义
{
add//+=的事件访问器实现的方式
{
lock (TestEventHandlers)
{
TestEventHandlers += value;
}
}
remove//-=事件移除器实现的方式
{
lock (TestEventHandlers)
{
TestEventHandlers -= value;
}
}
}
private void RaiseTestEvent()
{
//safely invoke an event
TestEventDelegate temp = TestEventHandlers; if (temp != null)
{
temp(this, new System.EventArgs());
}
}
}
}