这不是我第一次在 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