Längere SQL-Abfrage nicht in Forms_Load aufrufen, sondern wo?

19/01/2010 - 11:07 von Michael Reukauff | Report spam
Moin

Ich habe eine SQL-Abfrage, die so 10-15 Sekunden braucht. Bislang rufe ich
diese im Form_Load Event auf, was aber dazu führt, dass die Form erstmal
nicht angezeigt wird, sondern erst wenn die Abfrage durch ist.

Zu C++/MFC-Zeiten habe ich es immer so gemacht, dass ich mir selbst eine
WM_USER-Message geschickt habe, die dann zuletzt ausgeführt wurde, wenn die
Dialogbox dann schon zu sehen war.

Wie macht man sowas am besten in C#? Also ich möchte, dass die Dialogbox
sofort (mit dem Hinweis, dass die Daten geladen werden) angezeigt wird und
dann erst die Daten geladen werden. Backgroundworker kenne ich, finde ich in
dieser Situation aber nicht so angebracht.

Danke schon mal
Michael
 

Lesen sie die antworten

#1 Ernst Greiner
19/01/2010 - 11:43 | Warnen spam
Am 19.01.2010 11:07, schrieb Michael Reukauff:
Moin

Ich habe eine SQL-Abfrage, die so 10-15 Sekunden braucht. Bislang rufe ich
diese im Form_Load Event auf, was aber dazu führt, dass die Form erstmal
nicht angezeigt wird, sondern erst wenn die Abfrage durch ist.



Überschreiben von OnShown ist ganz gut.

protected override void OnShown(EventArgs e)
{
base.OnShown(e);

if (!this.DesignMode)
{
this.InitializeData();
this.InitializeGui();
}
}


Zu C++/MFC-Zeiten habe ich es immer so gemacht, dass ich mir selbst eine
WM_USER-Message geschickt habe, die dann zuletzt ausgeführt wurde, wenn die
Dialogbox dann schon zu sehen war.

Wie macht man sowas am besten in C#? Also ich möchte, dass die Dialogbox
sofort (mit dem Hinweis, dass die Daten geladen werden) angezeigt wird und
dann erst die Daten geladen werden. Backgroundworker kenne ich, finde ich in
dieser Situation aber nicht so angebracht.



Für das ist imho der Backgroundworker aber optimal geeignet.
Wie lange auch immer das Laden dauert, das Formular bleibt bedienbar.


hth Ernst

http://www.ieg-tools.net

Ähnliche fragen