如何确保可以收集带事件的对象?

时间:2013-08-16 14:33:11

标签: windows-phone-7 memory-leaks garbage-collection telerik mvvm-light

我有带事件的VirtualDataCollection

VirtualDataCollection.ItemsLoading += VirtualDataCollectionOnItemsLoading;

我无法取消订阅事件,因为它可以被称为随机数量。如何确定,该实例将由GC收集?我阅读了一些有关未订阅事件泄露的文章(如this)。另外,afaik,设置

是错误的
VirtualDataCollection.ItemsLoading = null;

目前,我正在使用

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

但那是enoguh吗?

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

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

1 个答案:

答案 0 :(得分:1)

  

如何确定,该实例将由GC收集?

如果你只是担心事情的GC方面而且它没有收集发布实例,那就不要了。从事件发布者到事件处理程序的引用,但不是相反。