Ereignisbehandlung bei langwierigen Vorgängen



  • Hallo,

    ich habe eine Frage bezüglich der Ereignisbehandlung. Ich habe aus einem schlauen Buch entnommen, dass dem User immer innerhalb ca. 100ms die Möglichkeit gegeben werden sollte Ereignisse auszulösen. Dazu gibt es ja die Methode:

    Application.DoEvents();
    

    Diese kann an einer entsprechender Stelle im Programm eingefügt werden.
    Nun aber meine Frage: Ich habe festgestellt, dass bei Klicken eines Buttons,Menue,Checkbox... immer ein extra Klick (Doppelklick) benötigt wird um das Steuerelement zu aktivieren. Wenn ich nicht im zeitaufwändigen Vorgang bin brauche ich aber nur einen! Warum ist das so? Liegt es daran das ich durch Klick eines Buttens der den Vorgang startet den Focus auf diesen gelegt habe??

    MfG
    Thomas D.



  • 'DoEvents' kannst Du getrost in die Tonne kicken, das ist nur eine Krücke, und wie Du siehst, keine besonders gute.

    Der Schlüssel ist, die aufwendige Ereignisbehandlung in einen separat laufenden Thread auszulagern, sodass die GUI nicht blockiert. Hierfür ist z.B. die 'BackgroundWorker'-Komponente geeignet.


Anmelden zum Antworten