事件 - 发布和订阅

时间:2015-02-28 16:44:06

标签: c#

当我调用这个button_click方法时,我希望调用mymethod()。目前没有任何事情发生。我知道我犯了一个错误。但不知道如何继续。有什么指针吗?

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

        B b = new B();
        b.Button_Click();


    }


}

class A
{
    B b;

    public A(B b)
    {
        this.b = b;
        // subscribe to event
        b.SomethingHappened += MyMethod;
    }

    private void MyMethod() { }
}

class B
{
    // declare event
    public event Action SomethingHappened;

    public void Button_Click()
    {
        // raise event
        if (SomethingHappened != null)
            SomethingHappened();

        SomeMethod();
    }

    public void SomeMethod() { }
}

当我调用这个button_click方法时,我希望调用mymethod()。目前没有任何事情发生。我知道我犯了一个错误。但不知道如何继续。有什么指针吗?

1 个答案:

答案 0 :(得分:5)

您没有发起新的A订阅您的B对象:

B b = new B();
A a = new A(b);
A a1 = new A(b);  
A a2 = new A(b); // multiple subscribers to the same publisher
b.Button_Click();