我对编程很新,但我很确定我几乎把这个事件搞砸了。我猜,我只需要一些指示。我正在尝试创建一个简单的事件示例,简单地说“你好!”每隔一秒左右。首先,我有“发布者”课程:
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'类型中使用)”但是,我知道我放入了“+ =”而没有别的。它在我的订阅者类中说明。我错过了什么?我做错了什么?
答案 0 :(得分:3)
在最后一行中,您正在调用ThePublisher.MyEvent()
而不是ThePublisher.MyMethod()
,正如您可能想要的那样。
您不能直接从定义事件的类外部触发事件。