c# - 如果我处置我的 Webclient,我是否需要取消订阅 WebClient 的事件

标签 c# events webclient idisposable

所以我已经将我的 WebClient 封装在 using 语句中。但我突然想知道,如果我的对象实现了 IDisposable 并包装在 using 语句中,我是否需要取消订阅事件?

下面是我当前如何使用 WebClient 的示例代码。该代码当前是否会存在内存泄漏,因为它没有取消订阅事件,或者 dispose 方法会处理该问题吗?

using (WebClient wc = new WebClient())
{
    wc.DownloadProgressChanged += ((sender, args) =>
    {
       //monitor something
    });
    wc.DownloadFileCompleted += ((sender, args) =>
    {
       //do something
    });
    wc.DownloadFileAsync(new Uri(string.Format("{0}/{1}", Settings1.Default.WebPhotosLocation, Path.GetFileName(f.FullName))), filePath);
}

最佳答案

不,没有必要。一旦 WebClient 被 GC 收集,所有事件处理程序都将被清理。在 GC 发生之前,它们不会造成任何损害,因为事件不可能触发,因此处理程序永远不会被调用。

关于c# - 如果我处置我的 Webclient,我是否需要取消订阅 WebClient 的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27057381/

相关文章:

c# - 关键字 'Transaction' 附近的语法不正确

javascript - 组件之间的数据传输

javascript - 如何创建一个 JS 事件,要求在异步下载时首先加载 2 个单独的 JS 文件?

c# - 在我的下载器中添加暂停和继续功能

c# - 使用 WebClient 类问题从 clickonce 下载 exe.config 文件

c# - MassTransit - PrefetchCount 和单个消费者的多个 channel 的解释

c# - 将桌面应用程序转换为 Web 应用程序

c# - 在 ASP.NET 4.5 和 5.0 项目的 VSTS 发布管理中使用配置变量

android - 如何在 ImageButton 中设置 onClick 事件?

c# - 如何为 Webclient 开启自动重定向