Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
gui refresh kommt zu spaet
#6
Jedes moderne Toolkit wartet mit dem Neuzeichnen bis du im Event Loop fertig bist (wenn es überhaupt einen gibt, meistens sind die Callback basierend), weil das sehr viel effizienter ist und die Programmierung für dich erleichtert, da du dich nicht um den Refresh selbst kümmern musst. Grundsätzlich gilt daher: "Never block the main thread ™!".

Die richtige Vorgehensweise wäre, eine längere Aktion wie z.B. das Scannen eines Verzeichnisses als Background Thread zu starten, und bei Beendigung wieder ein Notify zu posten. So macht das AIDE z.B. für das scannen des AB3 sources. Sonst könnte man währendessen ja nicht editieren und die GUI wäre eingefrohren.

Leider unterstützt AB3 aber kein Multithreading, sodass man das etwas aufwendig hacken muss. Wenn du einen Refresh erzwingen willst, dann kannst du das so tun:

[ab3]ntui_SendEvent{*obj, #TUIEV_REFRESH}[/ab3]

... ist aber kein guter Stil. Du solltest dann auf jeden Fall den MousePointer busy setzen, um dem User zu signalisieren dass der Main Thread geblockt ist und du keine weiteren Events erhältst.

ntui_SendEvent dispatched ein Event blockierend.
ntui_PostEvent schickt ein Event ab ohne zu blockieren, das Event wird dann erst gedispatched wenn der Focus wieder an NTUI zurückgegeben wird per ntui_GetEvent() oder nuti_WaitEvent().
Doku und Beispiele werden langsam notwendig, wenn ihr das ernsthalf benutzen wollt.
Zitieren


Nachrichten in diesem Thema

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste