0

Windows phone 8 では、電話から連絡先を読み取るには、次のコードのみがあります。

Dim WithEvents objContacts As New Microsoft.Phone.UserData.Contacts

Private Sub ReadContacts
objContacts.SearchAsync("", Microsoft.Phone.UserData.FilterKind.None, Nothing)
'Result will be read from the event
End Sub

'Event 

Private Sub A_SearchCompleted(sender As Object, e As Microsoft.Phone.UserData.ContactsSearchEventArgs) Handles A.SearchCompleted
Dim B = e.Results.ToList
End Sub

私の質問は、その機能をクラスの Awaitable Function に変換するにはどうすればよいですか?

例:

Public Class Contacto

Public Async Function GetContacts() As System.Threading.Tasks.Task(Of List(Of Microsoft.Phone.UserData.Contact))

'Do some work: here's my question

End Function

End Class 


'So I can call my function


Dim o as new Contacto

dim Contacts = Await o.GetContacts()

どうもありがとう、私はあなたの応答に感謝します。

4

2 に答える 2

0

System.Threading.Tasks.TaskCompletionSource クラスを使用して、質問の解決策を見つけました

Public Class CustomContacts
        Dim WithEvents objContacts As New Microsoft.Phone.UserData.Contacts
        Dim tcs As New System.Threading.Tasks.TaskCompletionSource(Of List(Of Microsoft.Phone.UserData.Contact))

        Public Async Function GetContacts() As System.Threading.Tasks.Task(Of List(Of Microsoft.Phone.UserData.Contact))
            objContacts.SearchAsync("", Microsoft.Phone.UserData.FilterKind.None, Nothing)
            Dim ListContacts = Await tcs.Task

           Return ListContacts
        End Function

        Private Sub objContacts_SearchCompleted(sender As Object, e As Microsoft.Phone.UserData.ContactsSearchEventArgs) Handles objContacts.SearchCompleted
            tcs.SetResult(e.Results.ToList)
        End Sub
    End Class


'So now I can call the function as follow:

dim objContacts as new CustomContacts
Dim myContacts = Await objContacts.GetContacts 'returns List(Of Microsoft.Phone.UserData.Contact)
于 2012-11-23T22:33:46.090 に答える
0

関数内で await を呼び出したい場合は、 async キーワードを追加する必要があります

public async void functionname () //c# syntax
于 2012-11-23T04:55:55.587 に答える