私はかつて持っていた:
using (MyWebClient client = new MyWebClient(TimeoutInSeconds))
{
var res = client.DownloadData(par.Base_url);
//code that checks res
}
今私が持っています:
using (MyWebClient client = new MyWebClient(TimeoutInSeconds))
{
client.DownloadDataAsync(new Uri(par.Base_url));
client.DownloadDataCompleted += (sender, e) =>
{
//code that checks e.Result
}
}
MyWebClientはWebClientから派生しています。現在、これを実行しているスレッドがたくさんあります。最初のケースではメモリ消費は問題ではありませんでしたが、2番目のケースでは、OutOfMemoryExceptionが発生するまでメモリが着実に増加しています。プロファイルを作成しましたが、WebClientが原因であり、破棄されず、ダウンロードされたデータが保持されているようです。しかし、なぜ?2つのケースの違いは何ですか?おそらくe.Resultはどういうわけか処分する必要がありますか?