在事件中使用资源的声明和用法

时间:2012-10-25 14:58:25

标签: c# memory-management

我只想澄清一下。在处理客户方面这是否安全:

using (WebClient client = new WebClient(TimeoutInSeconds))
{
   client.DownloadDataAsync(new Uri(par.Base_url));
   client.DownloadDataCompleted += (sender, e) =>
   {
       //code that checks e.Result
   }
} 

相关问题:假设我的客户端超出范围(没有引用它),没有正确处理内存是否可以清除内存中的数据?

如果客户被处置,那么e.Result所在的位置? 任何人都可以澄清这个吗?

1 个答案:

答案 0 :(得分:1)

在.NET 4.0中,WebClient类继承了Dispose中的System.ComponentModel.Component方法。由于它没有覆盖protected virtual void Dispose(bool disposing)方法,因此只处理类只从基类运行清理 - 即,它从ISite容器中删除组件,如果任何,并引发Disposed事件。由于您未分配网站而您未订阅Disposed活动,因此实际上根本无需致电Dispose

虽然代码肯定会失败,但至少在.NET 4.0中,它不会失败。