2016-11-15 5 views
3

を読み込みが完了しません下記のコードを参照してください:ウェブページは非同期に

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")に達することはありません。どうして?

この目的は、asp.netを使用してキャッシュできるように夜間にWebページを読み込むことです。

+0

デバッガを使用してコードを実行しましたか?行にブレークポイントを置いてヒットしたかどうかを確認し、Visual Studioを使用している場合は 'イミディエイトウィンドウ(Immediate Window) 'をチェックして、何も例外がスローされないようにします。 –

+0

ページをロードするだけの場合は非同期である必要がありますか?なぜ、通常の非同期の方法を使用しないのですか? – Jeremy

+0

LoadWebPageはInteger(1)を返していますが、戻り値の型はTask(Of Integer)です。戻り値はおそらく失敗していますか? – Jeremy

答えて

0

LoadWebPageを呼び出していますが、タスクは返されていますが、このタスクは実行されないため、LoadWebPage内の実際のコードは決して実行されません。 タスクを実行して実行する必要があります。

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 
関連する問題