事件倾听通知另一事件

时间:2014-09-11 11:40:33

标签: c# events

我不确定这是否是正确的标题,但我会解释。 我有两个班,TestBoo,由我自己编写。名为Manager的第三类也在那里。我想发起一个Manager对象,然后在类Test中监听方法的更改。

public class Test
{
    Manager manager;
    public event EventHandler NotifyMe;

    public Test()
    {
        manager = new Manager();
    }

    public void start()
    {
        manager.ChangedState += (sender, e) =>
        {
            Console.WriteLine(e.State);
            NotifyMe(this, e);
        }
    }
} 

然后,当我想要监听我的Boo事件并且最终得到foo()对象已经启动{{1}时,我有一个方法NotifyMe和方法manager }}

ChangedState

这仅在我第一次执行public class Boo { public void foo() { Test test = new Test(); test.start(); test.NotifyMe += (sender, e) => { Console.WriteLine("Manager has changed the state"); } } } 时才有效,我的想法是始终在start()manager.ChangedState上进行聆听。这是要走的路吗?

1 个答案:

答案 0 :(得分:0)

我认为你的问题是test是一个局部变量。只要foo退出,它引用的对象就有资格进行垃圾回收;一旦该对象被垃圾收集,它将不再写入控制台。试试这个:

public class Boo
{
    private readonly Test _test = new Test();

    public void foo()
    {
        _test.start();

        _test.NotifyMe += (sender, e) =>
        {   
            Console.WriteLine("Manager has changed the state");
        }   
    }
}