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;
}