2

GridApp の DataSource を作成しようとしています。GetFilesAsync() を使用して PicturesLibrary から画像を取得します。SampleDataSource.cs を変更しました。データ構造では、文字列 imagePath の代わりに StorageFile imagePath を使用します。もちろん、Uri から BitmapImage を作成する代わりに、IRandomAccessStream を使用して StorageFile から BitmapImage を作成するコードを書きました。

したがって、このコードはコンパイルできますが、機能しません。その理由は次のとおりです。非同期メソッド GetFilesAsync() はメイン スレッドをブロックしません。また、GroupedItemsPage.xaml.cs は、GetFilesAsync() が必要な情報を提供する前に、SampleDataSource に問い合わせます。これにより、例外 TypeInitializationException が発生します。

明らかな解決策は、GetFilesAsync() の同期アナログを使用することです。しかし、いくつかの新しい問題があります:

  1. KnownFolders.PicturesLibrary から同期的にファイルを取得することはできないようです。
  2. 大量の写真がある場合、GroupedItemsPage の生成により深刻なフリーズが発生するため、これはまったく悪い考えです。

では、どうすればこの問題を解決できますか? 私は解決策の概念だけを求めています。アプリのアーキテクチャをどのように編成すればよいですか?

4

0 に答える 0