2

Windows 8 アプリでセーブ データを読み込もうとしています。すべてのメソッドは非同期です。for ループで 2 回目にawait GetStoredActivitiesInFolder(groupFolder);実行すると、スレッドがまだ最初のループを処理しているため、エラーが発生します (推測します)。

エラー (上記のコード行を削除すると消えます):

タイプ 'System.Runtime.InteropServices.COMException' の例外が mscorlib.dll で発生しましたが、ユーザー コードで処理されませんでした

追加情報: アプリケーションは、別のスレッド用にマーシャリングされたインターフェースを呼び出しました。(HRESULT からの例外: 0x8001010E (RPC_E_WRONG_THREAD))

私のコード:

 public async void LoadActivities()
    {
        StorageFolder storageFolder = ApplicationData.Current.LocalFolder;

        StorageFolder activityFolder = await storageFolder.CreateFolderAsync(App.AppSettings.ActivityDirectory, CreationCollisionOption.OpenIfExists);

        IReadOnlyList<StorageFolder> groupFolders = await activityFolder.GetFoldersAsync();

        ObservableCollection<ActivityDataGroup> groups = new ObservableCollection<ActivityDataGroup>();

        foreach (var groupFolder in groupFolders)
        {
            ActivityDataGroup group = new ActivityDataGroup();
            group.GroupName = groupFolder.Name;

            ICollection<ActivityViewModel>  activities = await GetStoredActivitiesInFolder(groupFolder);

            foreach (var activity in activities)
            {
                group.Items.Add(activity);
            }

            AllGroups.Add(group);

        }

        this.IsDataLoaded = true;
    }
4

2 に答える 2

0

上記のどれも機能しませんでしたが、ランダムに見つけました。ページのコンストラクターで LoadActivities 関数が呼び出されました。OnLaunched メソッドに移動すると、魔法のように機能しました。理由はわかりませんが、そうでした。=)

とにかく、助けてくれてありがとう。

于 2012-10-04T19:55:38.877 に答える