关于内存消耗,使用(多个)WebClients 的最佳实践是什么?在我读过的互联网上的所有资源中,webClient 对象永远不会手动发布,因此我的问题是它什么时候发布?
如果我使用多个 webclient 对象从 Internet 获取异步数据怎么办——它们可能并行运行,也可能不并行运行?
关于内存消耗,使用(多个)WebClients 的最佳实践是什么?在我读过的互联网上的所有资源中,webClient 对象永远不会手动发布,因此我的问题是它什么时候发布?
如果我使用多个 webclient 对象从 Internet 获取异步数据怎么办——它们可能并行运行,也可能不并行运行?
WebClient 实现了 IDisposable 接口,但实际上并未使用它。它继承自 Component 类,该类需要在“事件”字段/变量中注册 Dispose 处理程序(您可以使用 Reflector/ILSpy/dotPeek/etc 进行检查),因此垃圾收集器可能会在必要时自动释放它。您可能想在这里阅读一些内容: .NET:异步下载时是否需要保留对 WebClient 的引用?也在这里:C# WebClient 内存使用
至于使用多个 WebClient 对象,我不确定会使用多少内存,因为在这些情况下我从未尝试过分析或关注内存消耗。
此外,如果速度不是问题,我会使用列表或队列,这样您就可以在请求完成后立即处理请求,以防止高内存消耗。