1

アプリのバックアップ機能に取り組んでおり、必要なフォルダーが既に存在するかどうかを確認し、存在しない場合は作成することになっています。

私は 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# 関数しか見つかりませんでした。

何か案は?

4

1 に答える 1