-1

Это мой код:DownloadStringTaskAsync Результат ТУПИК при использовании интерфейса

Dim getUrlContentTask = Task.Factory.StartNew(Function() GetUrlContent(modifiedUrl)) 
getUrlContentTask.Wait() 

'Check #6 - Check if the url has an expired text in it. 
CheckIfExpired(getUrlContentTask) 

Public Shared Function GetUrlContent(url As String) As task(of String) 

    Try 

     Dim webClient As New System.Net.WebClient 
     Dim webContent = Await webClient.DownloadStringTaskAsync(url) 

     Return webContent 
End Function 

Public Shared Function CheckIfExpired(webContent As Task(Of String) As Boolean 

    If util.ExpiredTexts.Any(Function(o) webContent.Result.Contains(o)) = False Then 
     Throw New UriFormatException("Url leads to an expired page") 
    End If 

    Return True 
End Function 

Когда эта функция работает без пользовательского интерфейса он работает нормально, но когда я пытаюсь запустить его с помощью пользовательского интерфейса он заклинивание в webContent.Result.contains (o)

Как можно заставить его работать с использованием пользовательского интерфейса?

+0

Вы явно блокирования вызова '' Result' или Wait () '. Не делай этого. Используйте 'await', чтобы ожидать асинхронно и получить результат. –

ответ

1

Вы блокируетесь в потоке пользовательского интерфейса, потому что Task.Result блокируется. Вместо этого вам нужно использовать async-wait.

Измените функцию для возврата Task(Of String), добавьте ключевое слово Async и суффикс Async к имени функции (которая является именование):

Public Shared Async Function GetUrlContentAsync(url As String) As Task(Of String) 
    Try 

     Dim webClient As New System.Net.WebClient 
     Dim webContent = Await webClient.DownloadStringTaskAsync(url) 

     Return webContent 
     End Function 
+0

Когда я попробовал это, и он застрял в следующей функции, где я использую webContent.result. –

+0

* Не звоните .Результат. 'await' возвращает результат асинхронной операции. –

+0

Мне нужно проверить позже, если результат содержит что-то, как я его тогда называю? –

Смежные вопросы