Вместо вызова thread.Abort()
вы можете использовать фоновый рабочий поток и использовать встроенное событие отмены.
Вы звоните worker.CancelAsync()
, чтобы поднять событие. Это может быть, например, кнопка или нажатие клавиши.
Тогда в методе worker_DoWork
вы получите следующее:
if (worker.CancellationPending)
{
// close the stream
}
else
{
// Carry on downloading
}
внутри вашего цикла, который выполняет загрузку