2016-11-15 2 views
3

Bitte beachten Sie den Code unten:Webseite nie fertig geladen asynchron

Public Shared Async Sub AsyncMain() 
     Dim a As AsyncronousTest = New AsyncronousTest 
     Dim task As Task = a.LoadWebpage() 

     Do While 1 = 1 
      If a.bool = True Then 
       Exit Do 
      End If 
     Loop 
     MsgBox("test") 
    End Sub 

Public Class AsyncronousTest 

    Public bool As Boolean = False 

    Public Sub Callback() 
     bool = True 
    End Sub 

    Public Async Function LoadWebpage() As Task(Of Integer) 
     Dim webC As WebClient = New WebClient() 
     Dim newUri As Uri = New Uri("http://webpagetocache") 
     Dim task1 As Task = webC.DownloadStringTaskAsync(newUri) 
     Await task1 
     Callback() 
     Return 1 
    End Function 
End Class 

msgbox("test") nie erreicht wird. Warum?

Der Zweck ist, eine Webseite über Nacht zu laden, damit sie mit asp.net zwischengespeichert werden kann.

+0

Sie sind mit einem Debugger durch Ihren Code gegangen? Platzieren Sie einen Haltepunkt in der Zeile, um zu sehen, ob er getroffen wurde, und aktivieren Sie außerdem das Direktfenster (wenn Sie Visual Studio verwenden), sodass keine Ausnahme stillschweigend ausgelöst wird. –

+0

Muss es asynchron sein, wenn Sie nur die Seite laden? Warum nicht einfach einen normalen Non-Sync-Weg verwenden? – Jeremy

+0

LoadWebPage gibt eine Ganzzahl (1) zurück, aber der Rückgabetyp lautet Task (Of Integer). Die Rückkehr scheitert vielleicht? – Jeremy

Antwort

0

Sie rufen LoadWebPage und es gibt die Aufgabe zurück, aber diese Aufgabe wird nie ausgeführt, daher wird der eigentliche Code innerhalb LoadWebPage nie ausgeführt. Sie müssen die Aufgabe ausführen, um sie auszuführen.

Public Async Sub AsyncMain() 
    Dim a As AsyncronousTest = New AsyncronousTest 
    Dim task As Task(Of Integer) = a.LoadWebpage() ' Here you generate the task 

    Dim actualResult = Await task ' Here you perform the task 

    Do While 1 = 1 
     If a.bool = True Then 
      Exit Do 
     End If 
    Loop 

    MsgBox("test") 
End Sub 
Verwandte Themen