LabVIEW Idea Exchange

cancel
Showing results for 
Search instead for 
Did you mean: 
jdeguire

Asynchronous Value Property Node

Status: Completed

Available in LabVIEW 2013 and later with the 'Set Control Values by Index' and 'Get Control Values by Index' functions.

It is my understanding that writing to the Value property of a Property Node is slow because it uses the UI thread and blocks until the control graphic is updated with the new value.  However, one of Dr. Damien's threads (link goes to thead) states that the Control Value.Set property for VIs is asynchronous, meaning that they don't block on the front panel update, and so should be faster than the standard Value property.  However, this method is not so desirable since it is dependent on knowing the control's label.

 

So the question came up:  why not have a Value property that is asynchonous?

6 Comments
JackDunaway
Trusted Enthusiast

Like, a local variable? 😉

jdeguire
Member

Sort of, but I have some VIs that I pass references to and update the referenced control value using the Value property.  For example, I have a VI that take a refernce to a string control and a string.  It appends the string to the referenced control and (optionally) scrolls to the bottom of that control.

tst
Knight of NI Knight of NI
Knight of NI

I didn't look at the benchmark numbers, but if you're only doing this for UI purposes, I doubt the penalty is worth bothering about. I don't care much if it takes even 600 ms if I'm only going to do it once.


___________________
Try to take over the world!
cwolfskill
Member
The other undesirable aspect of the control.set method is the overhead of converting to/from a variant. If you had an asynchronous value property node, it would accept the correct type and eliminate this extra overhead. In response to tst's comment: for applications where you are trying to continually update indicators by reference (see this post for one example: http://forums.ni.com/t5/LabVIEW/Alternate-Methods-for-FP-Updates/m-p/1975097) this extra overhead makes a big difference, and not being able to update by reference because of performance can really limit the flexibility of an application.
tst
Knight of NI Knight of NI
Knight of NI

Like another idea declined recently, this does kind of exist since LV 2013, which added the Get/Set value by index primitives which do this (not with references, but close enough if you really do need the performance boost).


___________________
Try to take over the world!
Darren
Proven Zealot
Status changed to: Completed

Available in LabVIEW 2013 and later with the 'Set Control Values by Index' and 'Get Control Values by Index' functions.