アプリのバックアップ機能に取り組んでおり、必要なフォルダーが既に存在するかどうかを確認し、存在しない場合は作成することになっています。
私は VB.Net を使用しているので、GetCompleted イベントを使用できません (経験のない C# でのみ使用できます)。
FolderExistsOrCreate 関数の現在のコードは次のようになります。
Private Async Function FolderExistsOrCreate(ByVal Name As String) As System.Threading.Tasks.Task(Of String)
Dim ID As String = Nothing
Dim firstRecheck = True
ReCheck:
Try
_message = "Looking for folder..."
NotifyPropertyChanged("Message")
NotifyPropertyChanged("SkyDrive")
_client = New LiveConnectClient(_session)
'it stops here and does not go further
Dim res = Await _client.GetAsync("me/skydrive/files?filter=folders,albums")
Dim folderData As Dictionary(Of String, Object) = DirectCast(res.Result, Dictionary(Of String, Object))
Dim folders As List(Of Object) = DirectCast(folderData("data"), List(Of Object))
For Each item As Object In folders
Dim folder As Dictionary(Of String, Object) = DirectCast(item, Dictionary(Of String, Object))
If folder("name").ToString = Name Then
ID = folder("id").ToString()
_message = "Folder exists..."
NotifyPropertyChanged("Message")
NotifyPropertyChanged("SkyDrive")
End If
Next
If ID = Nothing Then
If firstRecheck = False Then
_message = "Creating folder failed..."
NotifyPropertyChanged("Message")
NotifyPropertyChanged("SkyDrive")
Return Nothing
End If
_message = "Creating folder..."
NotifyPropertyChanged("Message")
NotifyPropertyChanged("SkyDrive")
Dim newFolderData As New Dictionary(Of String, Object)
newFolderData.Add("name", Name)
_client = New LiveConnectClient(_session)
res = Await _client.PostAsync("me/skydrive", newFolderData)
firstRecheck = False
GoTo ReCheck
End If
Return ID
Catch ex As Exception
Return Nothing
End Try
End Function
この関数は、SignIn ボタンを含む作成したコントロール内にあり、SkyDrive クラスをプロパティとしてコントロールに追加しました。使用する _session は、SignIn ボタンで作成されたセッションです。
有効なクライアントを取得しましたが、すべての GetAsync 関数により、例外なくアプリがそこで停止します。割り当てられたスコープには「skydrive_update」が含まれているため、フォルダーを作成するためのアクセスも許可されますが、コードはそこまで進んでいません。
Live SDK フォーラムと MSDN のフォーラムであらゆる種類の回答を検索しましたが、GetCompleted メソッドを使用する C# 関数しか見つかりませんでした。
何か案は?