2013-12-18 36 views
0

我對編程非常陌生,但我非常肯定我幾乎將這件事情弄糟了。我想我只需要幾點。我試圖創建一個事件的簡單例子,只是簡單地說「你好!」每秒鐘左右。首先,我有我的 「發佈者」 級:瞭解C中的事件#

public class Publisher 
{ 
    public delegate void MyEventHandler(); 
    public event MyEventHandler MyEvent; 
    public void MyMethod() 
    { 
     while (true) { Thread.Sleep(1000); if (MyEvent != null) { MyEvent(); } } 
    } 
} 

接下來,我有我的 「用戶」 類:

public class Subscriber 
{ 
    public void Subscribe(Publisher TheObject) 
    { 
     TheObject.MyEvent += new Publisher.MyEventHandler(SayHello); 
    } 
    public void SayHello() { Console.WriteLine("Hello!"); } 
} 

最後,在我的計劃:

public class Program { 
static void Main(string[] args) {  

var ThePublisher = new Publisher(); 
var TheSubscriber = new Subscriber(); 
TheSubscriber.Subscribe(ThePublisher); 
ThePublisher.MyEvent(); 

} 
} 

編譯器說,雖然我有一個錯誤。它在「ThePublisher.MyEvent();」中的「MyEvent」下面放置了一條紅線。在程序中。錯誤說「事件'NameOfProject.Publisher.MyEvent'只能出現在+ =或 - =的左側(除了在類型'NameOfProject.Publisher'內使用)」但是,我知道我把「+ =」,沒有別的。它在我的訂閱者類中聲明。我錯過了什麼?我究竟做錯了什麼?

回答

3

在最後一行,您打電話ThePublisher.MyEvent()而不是ThePublisher.MyMethod(),因爲您可能打算這麼做。

您不能直接從定義事件的類之外觸發事件。