私はWPFデータベースビューアアプリケーションを持っています:SQLiteデータベースから抽出されたデータを示すデータグリッドを持つユーザーコントロールを含む単純なメインウィンドウです。
問題は、このアプリケーションが使用可能になるまでに6秒かかることです。知覚WPFアプリケーションの起動時間を改善する
Iは、メインウィンドウのコンストラクタでユーザーコントロールを構築(およびすべてのデータロードを行う)試み:
スプラッシュ画面がアプリケーションになるまで空のメインウィンドウの1S、続いて次に、このよう5S示されます使用する準備ができました。
ユーザーは、何か(視覚的に)発生するまでに時間がかかりすぎると言いました。
次に、メインウィンドウのLoadedイベントハンドラにユーザーコントロールの作成(およびデータ読み込み)を移動しました。 スプラッシュ画面が3秒表示され、メインウィンドウが3秒表示され、アプリケーションが準備完了になります。
ユーザーは「より良い」と言いましたが、半分になったメインウィンドウが長い間無効な状態で表示されているということは嫌です。
認識されたアプリケーションの読み込み時間について、いくつかの一般的なアドバイスがありますか、またはこの状況を改善する方法について他の推奨事項がありますか?
私は理想的には、データがロードされるまで、メインウィンドウができるだけ早く表示され、いくつかの時間ガラスまたはスピナーが表示されると思います。しかし、私は間違ったスレッドで実行されるため、ユーザーコントロールの作成をバックグラウンドワーカーに移すことはできません。
誰でもこの問題の提案がありますか?
編集:
今は、グリッドデータソースとしてLINQ-to-EFクエリを割り当てたことに注意してください。
一つの可能な改善が
EDIT2 ...バックグラウンドでデータテーブルにこのデータをロードし、一度だけロードされ、それを割り当てることがあります。 私はロードするためにSystem.Data.SQLiteとEF4による.NET 4を使用していますデータ。多かれ少なかれ4000行と30列あります。
データベースからどれだけのデータをロードしていますか?あなたはどのようにデータをロードしていますか?ORM(もしあれば?)またはプレーンなADO.NETを使用していますか? – alimbada
多くのことが起こっていることをユーザーに伝えます。実際に何が起こっているかをチェックし、それに応じて最適化してください。ログイン画面や拡張スプラッシュ(波状のアニメーション/プログレスバー付き)は、まさに彼らが探しているものかもしれません。 – CodingBarfield
@alimbada:この情報を含めるように質問を編集しました。しかし、それはエンティティフレームワークなどに関連するよりも一般的な質問です.ADO.NETやORMはデータをロードするのに時間がかかりますが、これをThread.Sleep(..)に置き換えることもできます。問題はこのような状況にどう対処するかです。 – Marc