Zitat:Effektiv äußert sich das, indem die Registerkarte manchmal direkt nach dem klick auf die alte Seite zurückswitcht.
Ja, das ist genau so.
Das liegt an folgendem:
Der Wire, der vom Bedienelement zur lokalen Variablen geht, braucht eine gewissen Zeit. Wenn genau während dieser Zeit, sich das TabSheet am FP ändert, dann springt es wieder zurück. Das geht so: Zuerst wird "Seite 1" aus dem Bedienelement ausgelesen und auf den Wire gegeben. Dann findet ein TaskSwitch zwischen BD und FP statt, der Anwender klickt jetzt "Seite 2" an und die wird auch sichtbar. Und jetzt TaskSwitch wieder zurück von FP nach BD. Jetzt steht aber "Seite 1" im Wire und wird auf die lokale Variable geschrieben => TabSheet geht wie von selbst wieder auf "Seite 1".
Der Fehler wird noch dadurch verstärkt, weil die While-Schleifen ohne Wartezeit ablaufen!
' schrieb:Ah, ich sehe ich habe anscheinend einen gravierenden Denkfehler. Die lokale Variable (Ausgabe) funktioniert also gleichzeitig als Abfrage und wird (vor allem) ständig auch parralel durchgeführt ohne dass ich noch eine zweite Schleife brauche die die Abfrage realisiert? (so scheint es zumindest nachdem ich die zweite Schleife rausgenommen habe).
Wenn ich dich richtig verstanden habe, hast du bisher folgendes gedacht: Ich muss zuerst mal das Bedienelement in die lokale Variable schreiben, sonst funktioniert die obere While-Schleife nicht.
Dem ist aber nicht so. Sobald das Bedienelement geändert wird, haben automatisch auch alle lokalen Variablen, die zu diesem Bedienelent gehören, den geänderten Wert.
Zitat:Also - werden lokale Variablen ständig parrallel zu allen anderen Prozessen aktualisiert?
Im Prinzip ja.
Sag es aber besser so: Eine lokale Variable hat immer den selben Wert wie das dazu gehörende Element (ob Bedien- oder Anzeigeelement ist dabei egal).
Zitat:Das die Parrallel ablaufen und sich deswegen ins Gehege kommen könnten, war mir bewusst,
Das "Ins Gehege kommen" hat aber nichts mit lokalen Variablen an sich zu tun. Vielmehr damit, weil lokale Variablen des selben Elementes für gewöhnlich in unterschiedlichen Datenflüssen liegen. Und wegen des Datenflusses kann man nicht entscheiden, ob eine lokale Variable nicht doch eher ausgelesen wurde als sie von einen anderen Datenfluss beschrieben wird.
Zitat:allerdings war ich der Meinung das Frontpanel Readout und Schreiben in die Lokale Variable ein Vorgang sind (ergo nicht nach dem auslesen unterbrochen wird; was dazu führt, dass danach ein veralteter zustand in die Variable geschrieben wird).
Im Prinzip ist das richtig.
Dein Fehler liegt ja auch nicht hierin, sondern in dem Vorgang, den ich oben beschrieben habe.