Saya menggunakan webClient.DownloadFile()
untuk mengunduh file, dapatkah saya menyetel waktu tunggu untuk ini sehingga tidak akan memakan waktu lama jika tidak dapat mengakses file?
92
Coba WebClient.DownloadFileAsync()
. Anda dapat menelepon CancelAsync()
dengan timer dengan batas waktu Anda sendiri.
var taskDownload = client.DownloadFileTaskAsync(new Uri("http://localhost/folder"),"filename")
dan kemudiantaskDownload.Wait(TimeSpan.FromSeconds(5));
Jawaban saya datang dari sini
Anda dapat membuat kelas turunan, yang akan menyetel properti batas waktu dari
WebRequest
kelas dasar :dan Anda dapat menggunakannya seperti kelas WebClient dasar.
sumber
request.Timeout
. Pesan kesalahan'System.Net.WebRequest' does not contain a definition for 'Timeout' and no extension method 'Timeout' accepting a first argument of type 'System.Net.WebRequest' could be found (are you missing a using directive or an assembly reference?)
, apa yang saya lewatkan?using
arahan yang digunakan oleh cuplikan kode ini.Dengan asumsi Anda ingin melakukan ini secara sinkron, menggunakan metode WebClient.OpenRead (...) dan menyetel waktu tunggu pada Stream yang dikembalikannya akan memberi Anda hasil yang diinginkan:
Berasal dari WebClient dan mengganti GetWebRequest (...) untuk menyetel batas waktu yang disarankan @Beniamin, tidak berfungsi untuk saya seperti, tetapi ini berhasil.
sumber
stream.ReadTimeout
lebih besar dari yang sebenarnya diperlukan untuk menjalankan permintaan