Как ждать, пока с веб-клиента в vb.net не придет больше «404»? - PullRequest
0 голосов
/ 12 февраля 2019

Мне нужно скачать большой файл (около 3-5 ГБ) в моем приложении.Файл генерируется динамически по запросу, поэтому я не могу предсказать, когда он будет готов к загрузке.Мне нужно попробовать загрузить, и когда я получаю 404, я должен ждать и повторить попытку позже.

Загрузка асинхронная, потому что у меня есть индикатор выполнения.Я попытался также поставить "нормальную" загрузку (WC.DownloadFile (...)) в try..catch, но не решил мою проблему.

Private Sub DownloadUpdate()
    Dim RndName As String = IO.Path.GetRandomFileName
    UpdateTmpPath = IO.Directory.CreateDirectory(IO.Path.Combine(IO.Path.GetTempPath, RndName)).FullName
    UpdateTmpFile = UpdateTmpPath & "\update.zip"
    UpdateUnzipDir = IO.Directory.CreateDirectory(UpdateTmpPath & "\update").FullName
    Log(UpdateTmpFile)
    WC.DownloadFileAsync(New Uri(url), UpdateTmpFile)
End Sub

кстати извините за мой английский,это не мой родной язык:)

1 Ответ

0 голосов
/ 13 февраля 2019

нашел ответ :) Добавив обработчик «DownloadFileCompleted», я могу проверить Http-статус:

    Private Sub AfterDownload(ByVal sender As Object, ByVal e As Object) Handles WC.DownloadFileCompleted
    Dim status As HttpStatusCode = DirectCast(CType(e.Error, WebException).Response, HttpWebResponse).StatusCode

    If status = HttpStatusCode.NotFound Then
        "...wait and retry download"
    Else
        "...do something with downloaded file"
    End If
End Sub

Надеюсь, это кому-нибудь поможет.

Даниэль

...