2016-04-17 5 views
-1

Ich arbeite an einer Anwendung, die die gleiche Liste von Daten in Mehrkind-Formulare verwendet, aber ich habe festgestellt, dass wenn ich Kind Formular hat es einige Verzögerung vor dem Anzeigen. Übrigens verwende ich Linq, um Daten aus der Datenbank zu greifen.Ist es besser, Daten aus der Datenbank bei mainform zu laden?

Also meine Frage ist, ist es besser, Daten zu greifen, wenn Hauptformular lädt und es an andere Formulare weitergeben?

Antwort

1

Ein schwerwiegender Nachteil beim erstmaligen Laden von Daten, z. B. beim Anzeigen des Splash-Bildschirms, ist, dass Sie sich sorgen müssen, ob die Daten geändert werden. Zum Beispiel kann UserA die App starten und 10 Datensätze aus der zugrunde liegenden Tabelle laden. Dann fügt UserB einen Datensatz in die zugrunde liegende Tabelle ein. Sie müssen einen Weg finden, wie die App jedes Mal nach neuen Datensätzen sucht, wenn UserA die anderen Formulare lädt.

Wie von @ JonKoivula erwähnt, ist es besser, die Daten im Hintergrund zu laden und den UI-Thread nicht zu blockieren. Sie können einen "Spinner" oder etwas anzeigen, um den Benutzer während des Ladevorgangs zu unterhalten. Es ist meine Erfahrung, dass Benutzer "Spinner" verstehen und wirklich glauben, dass sie zeigen, dass Arbeit tatsächlich geschieht.

+0

Ging alle durch Laden von Daten mit Async zunächst. Danke für die Hilfe Jungs. –

1

Ja. Aber tun Sie es im Hintergrund, damit es den UI-Thread nicht blockiert. Zum Beispiel async/await (asynchroner Code) ist eine gute Wahl für die Abfrage von Daten aus der Datenbank, da es den Thread nicht blockiert.

+0

Wie können Sie das sagen? Haben Sie nie erfahren, dass es eine Business-Schicht geben kann, die unabhängig von der Benutzeroberfläche ist? Die Antwort hier sollte lauten: "Nein, das sollte überhaupt nicht in Form sein". – TomTom

+0

@ JonKoivula Okey danke für den Rat, ich werde das später versuchen, und Entschuldigung, wenn meine Frage dumm ist, bin ich neu in Windows Forms. –

+2

Es ist zwar besser, einen Business-Logic-Layer zu verwenden, wie von TomTom erwähnt, aber in dem Fall macht es keinen Unterschied, ob Sie einen BLL verwenden oder nicht; Wenn Sie eine Sperraufgabe im UI-Thread ausführen, wird die Benutzeroberfläche eingefroren. Es ist also besser, Daten in einen anderen Thread zu laden. Sie können async/await-Muster wie von Jon erwähnt verwenden oder BackgroundWorker verwenden oder einen Thread verwenden. Übrigens ist weder die Frage noch die Antwort dumm. –

Verwandte Themen