Отмените Webclient.DownloadFile в BackgroundWorker - PullRequest
1 голос
/ 29 июня 2011

Справочная информация: у меня есть программа, работающая через список URL; каждый URL-адрес должен загружаться по одному, но он запускается в фоновом потоке, чтобы поддерживать отзывчивость пользовательского интерфейса. Чтобы сообщить о прогрессе, я использую метод DownloadFileAsync. Моя проблема в том, что я хотел бы иметь кнопку отмены, которая немедленно заканчивала бы загрузку. Мой код выглядит как

AutoResetEvent autoMobile = new AutoResetEvent(false);
WebClient dclient = new WebClient();

//setup event handlers... for progress, etc...

dclient.DownloadFileAsync(new Uri(egg.DownloadURL), egg.LocalFilePath);
autoMobile.WaitOne();

//end of DoWork

Я не могу придумать способ или место для вставки цикла для проверки ожидающих отмены. Я лишь немного понимаю темы и не совсем понимаю AutoResetEvent.

1 Ответ

4 голосов
/ 29 июня 2011

Если вы используете System.Net.WebClient, он содержит метод CancelAsync(), который должен сделать это за вас.Все, что вам нужно, это ссылка на конкретный веб-клиент, который вы хотите отменить, чтобы событие нажатия вашей кнопки могло вызвать этот метод.

Имейте в виду, я сам не проверял это - но это было бы первымЯ стараюсь.

...