這不是我第一次在C#中創建自定義事件。它令我難以置信,爲什麼它在這種簡單的情況下不起作用。爲什麼我在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我:
訂戶,我有:
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
但是,這不會連接兩個事件。由於委託是值類型,因此您所做的只是將subscriber1.newPublication和subscriber2.newPublication的事件處理程序複製到publisher.newPublication。添加到訂閱者的任何其他事件處理程序都不會顯示在發佈者中。 – ShdNx 2011-02-06 10:07:11
@ShdNx嘿,對,我的意思是`subscriber_newPublication`實際上。感謝您注意錯誤。 – 2011-02-06 10:12:30