【发布时间】:2011-02-06 09:54:27
【问题描述】:
这不是我第一次在 C# 中创建自定义事件。令我惊讶的是为什么它在这种简单的情况下不起作用。
我有一个发布者和订阅者。在我的主程序中,我实例化了 1 个发布者和 2 个订阅者。当 addNews 被调用时,订阅者应该会收到事件 NewPublication:
static void Main()
{
Publisher publisher = new Publisher();
Subscriber subscriber1 = new Subscriber("John");
Subscriber subscriber2 = new Subscriber("Jane");
publisher.AddNews("custom event NewPublication");
}
在subscriber.cs 我有:
public delegate void NewPublication(Publisher fromPublisher, String Message);
public class Publisher {
private List<String> newsList = new List<String>();
public event NewPublication newPublication;
public void AddNews(String news) {
newsList.Add(news);
if (newPublication != null)
{
newPublication(this, news);
}
}
}
在订阅者中我有:
private String m_Name;
private event NewPublication newPublication;
public Subscriber(String name) {
m_Name = name;
newPublication += new NewPublication(subscriber_newPublication);
}
public void subscriber_newPublication(Publisher fromPublisher, String Message) {
MessageBox.Show(m_Name + " is notified for " + Message);
}
它可以编译,但在运行时,该事件永远不会引发。为什么不?我怎样才能修复我的代码以便它确实被提升?
与 MSDN 示例代码真正不同的是: http://msdn.microsoft.com/en-us/library/w369ty8x.aspx
【问题讨论】:
标签: c# .net events event-handling custom-event