2016-09-21 95 views
1

我想使用我的第一個異步函數是VB.NET,並且我得到一個我不明白的錯誤。異步函數的返回值

我已文檔(https://msdn.microsoft.com/fr-fr/library/mt674902.aspx),該

'在讀 - 返回類型是任務或任務(OF T)。 (請參閱「返回類型」一節。)

'這裏,它是Task(Of Integer),因爲return語句返回一個整數。

這是(非常簡單)的代碼。

Async Sub Main() 
    Dim test 
    test = Await funcAsync() 
End Sub 

Function funcAsync() As Task(Of Integer) 
    Dim result As Integer 
    result = 2 
    funcAsync = result 
End Function 

我在funcAsync = result行編譯錯誤:類型的值「整數」不能轉換爲「任務(整數)」

我想不出我做錯了什麼在這裏。

非常感謝您的幫助,

+0

如果使用「返回結果」而不是funcAsync = result,你會得到同樣的錯誤嗎? – phillyd

回答

1

您只能用「異步」關鍵字聲明函數使用等待。並且「Async」關鍵字不能用於Sub。

如果您的代碼是用於控制檯應用程序,則需要將所有異步處理放入函數中,並在Sub Main上對該函數返回的對象調用Wait()方法。這裏是一個適用於我的代碼:

Sub Main() 
    DoProcessing().Wait() 
    Console.ReadKey() 
End Sub 

Async Function DoProcessing() As Task 
    Dim test = Await funcAsync() 
    Console.WriteLine(test) 
End Sub 

Async Function funcAsync() As Task(Of Integer) 
    Dim result = 2 
    Return result 
End Function