INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Einfrieren der GUI bei Eventcase



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

30.06.2020, 10:02 (Dieser Beitrag wurde zuletzt bearbeitet: 30.06.2020 10:04 von NoWay.)
Beitrag #4

NoWay Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 241
Registriert seit: Jul 2013

LV-2019
2013
EN


Deutschland
RE: Einfrieren der GUI bei Eventcase
Die Eventcases sind eine gute Möglichkeit um Eingaben vom Benutzer abzufangen und zu verarbeiten. Wie Gerd jedoch richtigerweise erwähnte, darf das dein Programm idealerweise nicht blockieren, indem die Abarbeitung eines einzelnen Eventcases zuviel Zeit in Anspruch nimmt.
Die Verwendung von Queues an der Stelle hat durchaus praktische Vorteile. Einfaches Beispiel:

Du erzeugst zwei While Schleifen. Deine obere beinhaltet deine Eventstruktur und jeder Case wiederrum ein Enqueue Element in Kombination mit einem Enum (unbedingt TypeDef!) oder String.
Deine untere While Schleife beinhaltet dann eine Case Struktur. Jeder Case entspricht einem Enum bzw String Eintrag, wie du sie in der oberen Schleifen verwendet hast. Dazu packst du noch einen Case, wenn der Fall Eintritt, dass die Queue leer gelaufen ist (Timeout): Idle
Du prüfst "unten" nun deine Queue auf neue Einträge und gibst sie an deine Casestruktur weiter. Sind keine Vorhanden, wartest du einfach auf neue.

Nun hast du ein Konstrukt, mit dem du beliebig Kommandos aus der Eventstruktur weiterverarbeiten kannst, ohne diese zu blockieren.
Das heißt natürlich nicht, dass das Event auch zwingend bearbeitet wird. Blockiert deine untere Schleife nun, weil ein VI noch läuft, dann wird das Folgeevent nur ausgeführt, wenn das entsprechende VI mit seiner Arbeit fertig ist. Dir steht es natürlich frei, Queues, Notifier und Co. an entsprechende VIs zu übergeben. So lassen sich dann auch Benutzereingaben aus der zuvor erwähnten Eventstruktur in einem laufenden VI behandeln (z.B. die Verwendung eines Stopknopfes in Verbindung mit einem Notifier).

Gerade wenn man mit den Sachen nicht vertraut ist, hilft es enorm, einfach mal wild auf einem leeren Blockdiagramm diverse Dinge auszuprobieren. Was soll schon kaputt gehen? Wenn es dann immer noch hakt, bekommst du hier kompetente Hilfe im Forum.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
RE: Einfrieren der GUI bei Eventcase - NoWay - 30.06.2020 10:02

Gehe zu: