2016-04-17 9 views
-1

私は、複数の子供のフォームで同じデータのリストを使用するアプリケーションに取り組んでいますが、私は子供のフォームに表示する前にいくつかの遅延があることに気付きました。 ところで、私はlinqを使ってデータベースからデータを取得しています。mainformでデータベースからデータを読み込む方が良いですか?

私の質問は、メインフォームが読み込まれて他のフォームに渡されたときにデータを取得する方がよいということです。

答えて

1

スパッシュ画面を表示しているときなど、データを最初に読み込む際の重大な欠点は、データが変更されるかどうかを心配する必要があることです。たとえば、UserAはアプリを起動し、基になるテーブルから10のレコードを読み込むことができます。次に、UserBはレコードを基になるテーブルに挿入します。 UserAが他のフォームを読み込むたびに、新しいレコードをチェックするためのアプリの方法を考案する必要があります。

@JonKoivulaに記載されているように、UIスレッドをブロックしないで、バックグラウンドでデータをロードする方が良いです。データが読み込まれている間、ユーザーを楽しませるための「スピナー」などを表示することがあります。ユーザーが「スピナー」を理解し、実際に仕事が実際に起こっていると感じているのは私の経験でした。

+0

最初にasyncを使用してデータを読み込みました。助けてくれてありがとう。 –

1

はい。しかし、UIスレッドをブロックしないようにバックグラウンドで実行します。たとえば、async/await(asynchoronous code)は、スレッドをブロックしないため、データベースからのデータのクエリに適しています。

+0

どのように言えますか? UIから独立したビジネス層があることは決してありませんでしたか?ここでの答えは、「いいえ、それは全く形式ではありません」でなければなりません。 – TomTom

+0

@JonKoivula Okeyはアドバイスをいただきありがとうございます。私は後でそれを試してみるつもりです。ごめんなさい、私の質問がばかげていると、私はWindowsフォームに慣れていません。 –

+2

TomTomが言及したようにビジネスロジックレイヤーを使用する方が良いでしょうが、BLLを使用するかどうかは違いはありません。 UIスレッドでブロッキングタスクを実行している場合、UIはフリーズします。だから、別のスレッドでデータをロードするほうがいいです。 Jonのようにasync/awaitパターンを使うか、BackgroundWorkerを使うか、スレッドを使うことができます。ちなみに、質問も答えもダムではありません。 –

関連する問題