Laden...

Warum DoEvents Mist ist!

Erstellt von Programmierhans vor 17 Jahren Letzter Beitrag vor 17 Jahren 4.547 Views
Information von herbivore vor 12 Jahren

Dies ist ein Thread, auf den aus der FAQ verwiesen wird. Bitte keine weitere Diskussion, sondern nur wichtige Ergänzungen und diese bitte knapp und präzise. Vielen Dank!

Programmierhans Themenstarter:in
4.221 Beiträge seit 2005
vor 17 Jahren
Warum DoEvents Mist ist!

Die Verwendung von DoEvents kann zudem dazu führen dass Funktionen erneut aufgerufen werden können bevor sie fertig sind was zu absolut nicht gewollten Zuständen führen kann.

Beispiel:

Import und Prüfung von externen Daten

  • Clear des internen DataSets
  • Import von Daten in das interne DataSet
  • DoEvents (damit das UI nicht so eingefroren aussieht)
  • Prüfung der Daten des internen DataSet

Problem:

Durch das DoEvents kann der Import der Daten erneut gestartet werden. Die bereits importierten Daten werden gelöscht und erneut importiert.... und der zuerst gestartete Import crasht weil der zweite Import dem ersten die Daten unter'm Arsch weglöscht...

Eine alternative Möglichkeit Events von Komponenten welche in anderen Threads laufen findet ihr hier:

Komponenten mit mehreren Threads

In dem Artikel geht es darum, dass man der Komponente eine Referenz auf den UI-Thread mitgibt und somit die Events direkt im UI-Thread einlaufen weil die Komponente selber den Event in den UI-Thread invoked (und somit in der Eventbehandlung ein Zugriff auf das UI direkt ohne Invoke möglich wird).

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Community,

svenson beschreibt in diesem Beitrag in Warten bis das Form neu gezeichnet wurde? noch ein weiteres Problem mit DoEvents beim Schließen der Anwendung.

Fazit: Lasst die Finger von DoEvents, auch wenn es noch so verlockend ist.

herbivore