我不确定这是否是正确的标题,但我会解释。
我有两个班,Test
和Boo
,由我自己编写。名为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
上进行聆听。这是要走的路吗?
答案 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");
}
}
}