我只想澄清一下。在处理客户方面这是否安全:
using (WebClient client = new WebClient(TimeoutInSeconds))
{
client.DownloadDataAsync(new Uri(par.Base_url));
client.DownloadDataCompleted += (sender, e) =>
{
//code that checks e.Result
}
}
相关问题:假设我的客户端超出范围(没有引用它),没有正确处理内存是否可以清除内存中的数据?
如果客户被处置,那么e.Result
所在的位置?
任何人都可以澄清这个吗?
答案 0 :(得分:1)
在.NET 4.0中,WebClient
类继承了Dispose
中的System.ComponentModel.Component
方法。由于它没有覆盖protected virtual void Dispose(bool disposing)
方法,因此只处理类只从基类运行清理 - 即,它从ISite
容器中删除组件,如果任何,并引发Disposed
事件。由于您未分配网站而您未订阅Disposed
活动,因此实际上根本无需致电Dispose
。
虽然代码肯定会失败,但至少在.NET 4.0中,它不会失败。