Я пытаюсь понять, что именно происходит с выдающимися асинхронными операциями WebClient при закрытии приложения WinForms.У меня на самом деле нет проблемы, мой вопрос вызван желанием понять точный поток.
Приложение использует следующий шаблон, когда запрашивается загрузка:
using (WebClient wc = new WebClient())
{
wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(my_DownloadProgressChanged);
wc.DownloadFileCompleted += new AsyncCompletedEventHandler(my_DownloadFileCompleted);
Обработчики событий - это методына форме.Одна из моих проблем заключается в том, что я не хочу, чтобы те вызывались, когда форма уже закрыта.Я мог бы хранить ссылки на WebClient и - = при закрытии формы, но я хотел бы не выполнять ненужную работу, чтобы избежать новых проблем.
Вот вопросы, которые у меня есть:
- почему нормально утилизировать WebClient до завершения асинхронных операций?
- нужно ли отменять регистрацию обработчиков при завершении работы основного окна, и что происходит, если мы этого не делаем?Мое наблюдение заключается в том, что если я закрываю форму, ни один из асинхронных обратных вызовов не вызывается, но почему именно, как именно он завершает работу?
Я рассмотрел код WebClient, но не смог разобраться в этом.Заранее спасибо.