多数のセクションを含むアプリケーションがあり、それぞれに計算にかなりの時間がかかるデータが含まれています。これにはいくつかのアプローチがあります。
簡単な解決策 1: アプリケーションの起動時にすべてのセクションのデータを計算します。これは、アプリケーションの起動が遅くなることを意味します。
簡単な解決策 2: ユーザーがロードするときに各セクションのデータを計算します。これは、各セクションのロードが遅くなることを意味します (これは悪いことです。なぜなら、各セクションはすでにかなりのレンダリング計算を行う必要があるため、すでに少し遅いからです.
このアプリケーションではパフォーマンスが重要であるため、これらのソリューションはどちらも理想的ではありません。したがって、これは単純ではない解決策につながります。アプリの起動時に、バックグラウンド スレッドでセクション データの計算を開始します。このソリューションの問題は、ユーザーが最初にロードするセクションを予測する良い方法がないことです。そのため、バックグラウンド スレッドにロードする最後のセクションをロードすると、解決策 2 を使用した場合よりも長く待機することになります。
したがって、これは解決策につながります。アプリの起動時に、バックグラウンド スレッドでセクション データの計算を開始しますが、ユーザーがセクションをロードすると、バックグラウンド スレッドを一時停止し、ユーザーが要求したセクションの計算を開始します。計算がすでに開始されていない限り、その場合は終了させます。
解決策 4 を実装する方法がわかりません。おそらく最も簡単な解決策は、プライオリティ キューを使用し、タスクがロードされたときにタスクの優先度を上げることだと思いますが、C# でこれを実装する方法がわかりません。これは合理的なアプローチですか?C# のプライオリティ キューに適したライブラリは何ですか?