Я использую следующий метод в фрагменте кода:
private void DownloadData(Uri uri)
{
WebClient webClient = new WebClient();
DownloadDataCompletedEventHandler eh = null;
eh = delegate(object sender, DownloadDataCompletedEventArgs e)
{
webClient.DownloadDataCompleted -= eh;
((IDisposable) webClient).Dispose();
OnDataDownloaded();
};
webClient.DownloadDataCompleted += eh;
webClient.DownloadDataAsync(uri);
}
Теперь я беспокоюсь, что ошибка с жестким воспроизведением может быть вызвана тем, что экземпляр WebClient
является сборкой мусора перед вызовом DownloadDataCompleted
: после выхода из моего метода DownloadData()
нет очевидных ссылок на WebClient
, чтобы это могло случиться.
Итак, мой вопрос: может ли это реально произойти? Я не могу воспроизвести проблему, поэтому могут произойти некоторые внутренние вещи, которые не позволяют объекту WebClient
быть собранным в мусор (например, объект может регистрироваться в глобальном объекте где-то в ожидании ответа).
Код работает на .NET 2.0, если это имеет значение.