在内存消耗方面使用(多个)WebClient的最佳做法是什么?在我读过的互联网上的所有资源中,webClient对象永远不会被发布,因此我的问题是什么时候会发布?
如果我使用多个webclient对象从互联网上获取异步数据怎么办?它们可能也可能不会并行运行?
答案 0 :(得分:1)
WebClient实现了IDisposable接口,但实际上并没有使用它。它继承自Component类,它需要在“events”字段/变量中注册Dispose处理程序(您可以使用Reflector / ILSpy / dotPeek / etc进行检查),这样垃圾收集器可能会在必要时自动释放它。您可能想在此处阅读一些内容: .NET: Do I need to keep a reference to WebClient while downloading asynchronously?以及此处:C# WebClient Memory Usage
至于使用多个WebClient对象,我不确定使用了多少内存,因为在这种情况下我从未尝试过分析或关注内存消耗。
此外,如果速度不是问题,我会使用List或Queue,这样您就可以在完成后一个接一个地处理请求,以防止高内存消耗。