1

我只是想澄清一下。就处置客户而言,这是否安全:

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

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

而且如果客户被处置,那么在哪里e.Result居住?有人可以澄清一下吗?

4

1 回答 1

1

在 .NET 4.0 中,WebClient该类DisposeSystem.ComponentModel.Component. 由于它不会覆盖该protected virtual void Dispose(bool disposing)方法,因此处理该类仅从基类运行清理 - 即,它从ISite的容器中删除组件(如果有)并引发Disposed事件。由于您没有分配站点并且您没有订阅该Disposed事件,因此实际上根本不需要调用Dispose

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

于 2012-10-25T15:26:34.157 回答