Laden...

close() wird nicht vollständig ausgeführt

Letzter Beitrag vor 17 Jahren 8 Posts 1.695 Views
close() wird nicht vollständig ausgeführt

Hi,

ich habe folgendes Problem:

Ich hole mir über einen Dialog Daten. Nachdem der User diese Daten eingegeben hat, schließe ic den Dialog mit close() und starte mit den übergebenen Daten eine Datenbankabfrage. Diese kann durchaus etwas länger dauern. Nun wird der Dialog nicht komplett ausgeblendet sondern es bleiben Fragmente zu sehen bis die DB-Abfrage fertig ist.
Wie kann ich meinem Programm beibringen, dass es erst mit der DB-Abfrage beginnen soll, wenn der Dialog auch wirklich komplett geschlossen ist?

Viele Grüße,

Oli

Viele Grüße, Oli

  1. Schließ den Dialog mit Dispose
  2. Jede von Component abgeleitete Klasse bietet ein Disposed-Ereignis an

vielleicht hilft es, erst visible auf false zu setzen

Application.DoEvents();

vor der Datenbankabfrage sollte Dein Problem lösen.

Mein Haus, mein Viertel, mein Blog

Einer der wenigen Momente, wo die Vewendung von Application.DoEvents() angezeigt ist (nach Close() und vor der DB-Abfrage).

oder threading....
aber doevents ist da doch bequemer und da würde iches auch einsehen das es sinnvoll ist

Vielen dank, mit App.DoEvents hat es funktioniert.

Grüße Oli

Viele Grüße, Oli

Hallo oli001,

DoEvents ist nicht gut und in deinem Fall definitiv nicht ausreichend. Die Datenbank-Abfrage muss in einen extra Thread, wenn sie länger als 1/10s dauern kann.

[FAQ] Warum blockiert mein GUI?

herbivore