2016-09-21 15 views
1

私は最初の非同期関数VB.NETを使用しようとしていますが、私は理解していないエラーが発生します。非同期関数からの戻り値

私は

"というドキュメント(https://msdn.microsoft.com/fr-fr/library/mt674902.aspx)で読んだ - 戻り値の型は、(Tの)タスクまたはタスクです。

'return文が整数を返すため、これはTask(Of Integer)です。

ここに(非常に簡単な)コードがあります。

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の代わりに 'Return 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 
関連する問題