0

我有带有事件的 VirtualDataCollection

VirtualDataCollection.ItemsLoading += VirtualDataCollectionOnItemsLoading;

我不能在事件内部取消订阅,因为它可以被称为随机次数。如何确定该实例会被 GC 收集?我读了一些关于未订阅事件泄漏的文章(像这样)。另外,afaik,设置错误

VirtualDataCollection.ItemsLoading = null;

目前,我正在使用

public void OnNavigatedFrom()
    {
        VirtualDataCollection.Clear();
        VirtualDataCollection = null;
        Cleanup();
    }

但这够吗?

编辑:嗯..实际上,我也可以添加

public void OnNavigatedFrom()
    {
        VirtualDataCollection.ItemsLoading -= VirtualDataCollectionOnItemsLoading;
        VirtualDataCollection.Clear();
        VirtualDataCollection = null;
        Cleanup();
    }
4

1 回答 1

1

如何确定该实例会被 GC 收集?

如果您只担心 GC 方面的事情并且它无法收集发布实例,请不要担心。事件发布者有对事件处理程序的引用,但反之则不然。

于 2013-08-16T14:35:12.760 回答