了解C#中的事件

时间:2013-12-18 17:47:13

标签: c# events

我对编程很新,但我很确定我几乎把这个事件搞砸了。我猜,我只需要一些指示。我正在尝试创建一个简单的事件示例,简单地说“你好!”每隔一秒左右。首先,我有“发布者”课程:

 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'类型中使用)”但是,我知道我放入了“+ =”而没有别的。它在我的订阅者类中说明。我错过了什么?我做错了什么?

1 个答案:

答案 0 :(得分:3)

在最后一行中,您正在调用ThePublisher.MyEvent()而不是ThePublisher.MyMethod(),正如您可能想要的那样。

您不能直接从定义事件的类外部触发事件。