Strona 1 z 1

List Folder - nielogiczne zachowanie

: 20 lut 2007 08:06
autor: wbiker
Witam,
Spotkałem się ostatnio z dziwnym zachowaniem klocka "List Folder". Według mnie poniższy VI powinien działać następująco:

- string "FIRST FRAME" zostaje wpisany do indicatora "String" (powinien pojawić się odrazu po uruchomieniu VIa na front panelu)

- w drugiej ramce wybrany katolog zostaje wylistowany przy pomocy klocka "List Folder" - powinno dziać się to po wykonaniu poprzedniej klatki - niestety tak sie nie dzieje. Można to łatwo zaobserwować gdy w listowanym katalogu jest np 1000 plików, wtedy widać że wpisanie stringa z pierwszej klatki następuje dopiero po wylistowaniu katalogu co wydaje mi się zupełnie nielogiczne.

- nastepne klatki stworzyłem jedynie w celu leprzego zaobserwowania tego dziwnego zjawiska


[img]http://www.e-lotnisko.nazwa.pl/wg_temp/ ... roblem.jpg[/img]

Z góry dzięki za wyjaśnienie tej sprawy.
WBIKER

Re: List Folder - nielogiczne zachowanie

: 20 lut 2007 11:55
autor: bogdani
Witaj

Wydaje mi się, że na moim komputerze jest OK.
Przynajmniej przy debugowaniu widzę poprawną kolejność.

bogdani

PS. Uzupełnij używaną wersję LabVIEW w profilu.

Re: List Folder - nielogiczne zachowanie

: 20 lut 2007 12:59
autor: PMaj
witam
wbiker pisze:Spotkałem się ostatnio z dziwnym zachowaniem klocka "List Folder". Według mnie poniższy VI powinien działać następująco:

- string "FIRST FRAME" zostaje wpisany do indicatora "String" (powinien pojawić się odrazu po uruchomieniu VIa na front panelu)

- w drugiej ramce wybrany katolog zostaje wylistowany przy pomocy klocka "List Folder" - powinno dziać się to po wykonaniu poprzedniej klatki - niestety tak sie nie dzieje. Można to łatwo zaobserwować gdy w listowanym katalogu jest np 1000 plików, wtedy widać że wpisanie stringa z pierwszej klatki następuje dopiero po wylistowaniu katalogu co wydaje mi się zupełnie nielogiczne.
Opisany program zachowuje się tak jak piszesz - ale rozumienie nie jest do końca dobre. To nie jest tak, że wylistowanie folderu jest wykonywane przed wpisaniem wartości do stringa. Chodzi o to, że w pierwszej ramce wpisujesz do zmiennej "string" ciąg znaków "First Name", ale nie mówisz w tym miejscu, że priorytetem jest wyświetlenie tego na ekranie. Wyświetlenie na ekranie elementu jest wykonywane w UserInterfejs Execution System. Tymczasem, po wykonaniu 1szej ramki system nie wykonuje wątku interfejsu użytkownika, (bo i po co, to tylko interfejs) ale zaczyna wykonywać funkcję grzebania po folderze. Dopiero jak skończy lub gdy będzie miał czas, to przełączy się do UIThread i wykona przepisanie wartości na ekran. Która pierwsza to nie jest istotne.
Jeżeli priorytetem jest wypisanie najpierw na ekran wartości a dopiero potem wykonanie funkcji to należy wymusić przejście do UIThread - np. poprzez wywołanie funkcji odwołującej się do UI - to jednak zwolni wykonanie proframu (rys)

pozdrawiam
pmaj

Re: List Folder - nielogiczne zachowanie

: 20 lut 2007 13:51
autor: wbiker
Dzięki za dogłębną analizę - teraz rozumiem :)
Pozdrawiam
WBIKER