L.E*_*E.O 8 c# events garbage-collection
一个简单的问题.假设我有一个如下例所示的类.
class Subscriber
{
private Publisher publisher = new Publisher;
public Subscriber()
{
publisher.SomeEvent += new EventHandler(OnEventFired);
}
private void OnEventFired(object sender, EventArgs e)
{
}
}
Run Code Online (Sandbox Code Playgroud)
在程序的某个地方,我有一个看起来像这样的方法:
public void DoSomething()
{
Subscriber subscriber = new Subscriber();
}
Run Code Online (Sandbox Code Playgroud)
我是否正确地期望这会导致内存泄漏,因为订阅者永远不会取消订阅发布者事件,从而导致他们都保持对彼此的强引用?
Jon*_*eet 16
它不会导致泄漏 - GC可以毫无问题地处理循环引用.
然而,这将意味着出版商将切实给用户一个参考,所以用户不能被垃圾收集,直到出版商可享有GC,或者从事件退订.
| 归档时间: |
|
| 查看次数: |
2103 次 |
| 最近记录: |