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 

Problem Eventschleife



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!

25.07.2014, 14:59
Beitrag #1

T_T Offline
LVF-Grünschnabel
*


Beiträge: 42
Registriert seit: Jun 2008

8
2008
en

10000
Deutschland
Problem Eventschleife
Hallo Experten,

wir steigen grad auf v2013 um und schon hab ich ein Problem.

Ich hab ne Eventschleife, die bei Wertänderung des Schiebereglers eine whileloop ausführt. Bei dem Event ist "limit maximum instances..." auf 1 gesetzt.
Wenn ich den Schieberegler mehrfach ändere, während ich in der while-Schleife hänge werden die events zwar alle mitgeloggt (siehe Eventmanager), beim beenden der while-Schleife werden allerdings alle events bis auf die letzten 2 rausgeschmissen (flushed). bedeutet, daß das event 3x ausgelöst wird...(daß ich die Whileloop 3x beenden muß)

Kann mir da jemand auf die Sprünge helfen, was ich falsch mache?

Danke


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.07.2014, 15:23
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Problem Eventschleife
Hallo T,

Zitat:was ich falsch mache?
Wozu die While-Loop im Event-Case?
Grundregel bei Events: immer so schnell wie möglich abarbeiten. Das bedeutet u.a., keine Loops mit Wartezeit zu verwenden…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2014, 15:34 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2014 15:35 von T_T.)
Beitrag #3

T_T Offline
LVF-Grünschnabel
*


Beiträge: 42
Registriert seit: Jun 2008

8
2008
en

10000
Deutschland
RE: Problem Eventschleife
Das hier gezeigte Beispiel ist zur Fehlersuche stark verkürzt.
Im Originalprogramm wird durch änderung des Schiebereglers ein Filter verändert und ein Spektrometer ausgelesen bis der Bediener zufrieden ist mit seiner Änderung (-> Stop While).

Merkwürdige Grundregel....

Hab seit ca. 10 Jahren (gebs Eventschleifen seit v7 oder v8?) meinen Programmcode für das jeweilige event direkt in die Eventschleife gehauen und eigentlich oft mit while-loops darin gearbeitet. Gab bisher keine Probleme....

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2014, 15:38 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2014 15:39 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Problem Eventschleife
Hallo T,

du willst also jedesmal, wenn der Schieberegler verschoben wird, eine Berechnung erneut durchführen.
Bis hierhin alles schön.

Aber der Einsatz einer While-Loop widerspricht eben diesem Ansatz: bei jedem Schieben wird ein neues ValueChange-Event gefeuert.
Wozu also die While-Loop, wenn der Event-Case doch sowieso erneut aufgerufen wird???

Zitat:eigentlich oft mit while-loops darin gearbeitet. Gab bisher keine Probleme....
- Du musstest dazu aber immer das defaultmäßige UI-Blocking im Event ausschalten!
- Du hattest bisher immer schon das Problem, dass sich dadurch weitere Events aufgestaut hatten, die erst nach Beenden dieses Event-Cases abgearbeitet werden konnten. Das gibt für den unbedarften User sehr unschöne Effekte…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2014, 15:49
Beitrag #5

T_T Offline
LVF-Grünschnabel
*


Beiträge: 42
Registriert seit: Jun 2008

8
2008
en

10000
Deutschland
RE: Problem Eventschleife
Mir ist schon klar, daß mit jeder Änderung des Schiebereglers ein neuer event ausgelöst wird. Das habe ich gehofft zu verhindern, indem ich bei den Einstellungen des Events die max. Instances auf 1 gesetzt hab. Allerdings macht LV wohl daraus eine 3....

Ich will mit dem event in ein unterprgramm springen (while), in welchem alle 200ms ein Spektrum eingelesen wird und der Bediener diverse Sachen ändern kann (Lichteinkopplung manuell ändern, oder eben den Schieberegler weiter zu/auf machen). Mit dem Stop-Knopf wird die Whileschleife beendet und man kann sich einem anderen Programmpunkt zuwenden...

Weil der benutze.....

Sorry. Danke für die Hilfe!

Beim schreiben isses mir klargeworden. Ich binde das event einfach an einen anderen Knopf, der das unterprogramm zum Sprektrum auslesen startet, in welchem dann der Schieberegler seine Funktion erfüllen kann.

Liegt wohl am Freitag.....werd einfach mal Schluß machen.

Schönes Wochenende!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: