Actor Framework Documents

cancel
Showing results for 
Search instead for 
Did you mean: 

Fix for AF Project Provider Performance Issue

We have found, and fixed, a performance issue with the AF Project Provider that ships with LabVIEW 2015.

The issue can arise if your project contains several nested libraries.  (The index case had libraries within libraries within a single uber-library.  I don't judge, I just report.)  In such instances, you can experience a significant, delay between right-clicking on a project item and seeing the right click menu, even for project items not associated with Actor Framework.

To resolve this issue, simply replace the VI <LabVIEW>\resource\Framework\Providers\MessageMakerProvider\Support\Is Actor Publict Method.vi with the version attached here.

For the record, this VI fixes CAR 543330.  We intend to ship it with a future version of LabVIEW.

Standard disclaimers apply:  The attached Code is provided As Is.  It has not been tested or validated as a product.  So please, before you replace the VI, make a backup copy somewhere.  You will want to be able to roll back this change, if we discover an issue at a later date.


Comments
vekkuli
Member
Member
on

This just fixed a major inconvenience in my IDE experience. Thank you a thousand times! Here's a thread I started about it: http://forums.ni.com/t5/LabVIEW/Right-click-in-Project-Explorer-is-sometimes-slow/td-p/3265559

fabric
Active Participant
Active Participant
on

Any reason the block diagram is secret?

justACS
Active Participant Active Participant
Active Participant
on

fabric wrote:


                       

Any reason the block diagram is secret?


                   

Yes.

There are private methods on the block diagram.

cbutcher
Trusted Enthusiast Trusted Enthusiast
Trusted Enthusiast
on

I've been using this happily for some time, but now my right click menu doesn't display the 'Actor Framework' subsection with 'Create Message' when I right-click a public method. Right clicking the class still provides 'Create Messages for Actor' and 'Create Abstract Message for Caller'. Rolling back to the original VI gives me the menu options again.

 

The class is usually private - I make it public only to create messages automatically (via right clicking on the methods I want, including multiple methods) then make it private. Perhaps this is related to the problem.

 

I had forgotten entirely about this change that I made until I went trying to find out the conditions for the menu to appear and found a conveniently labelled "installedOriginally_Is Actor Public Method.vi"...

Any idea what might be wrong, or something I can do to fix it/work-around? (Apart from the obvious, use the original file...). 


GCentral
justACS
Active Participant Active Participant
Active Participant
on

Just to clarify:  are you marking the actor class as private?  I'm not sure why one would do that, and I'm not sure what effect that would have on the tools.

 

I see behavior like what you have described when someone changes a class to inherit from Actor.lvclass.  The project doesn't know that the class is an actor until you have saved the changes, so none of the right-click stuff is available.

 

The code checks the access scope of the target method to determine if the right-click menus are allowed.  It sounds like the project hasn't detected that you have changed the method's scope to public, much like the case I outlined above.  So, try to "save all" on the actor library, and see if that helps.

cbutcher
Trusted Enthusiast Trusted Enthusiast
Trusted Enthusiast
on

Yes - I've had the class inheriting from Actor.lvclass as private within a library, to prevent the use of the class from outside of the library. 

 

If I don't change it to public, none of the right click options appear (unsurprisingly). When I changed it to public in this case, right clicking the class allowed the normal options, but right clicking a method didn't provide the same right click menu that I expected (or see in other projects, and earlier following the same workforce in this class/project).

 

I also guessed that it was some update triggered by saving, but using the right click menu to save the class, the library, or the project, along with Ctrl-Shift-S, had no effect (on this. I assume they did save the relevant parts.)

 

 


GCentral
justACS
Active Participant Active Participant
Active Participant
on

If the actor is private inside its library, how do you launch it?

 

So I would try an explicit scope change on the target method.  If it shows as public, set it to private, save the class, and then set it to public.  I would also try actually closing and re-opening the project.

 

You may be headed toward asking someone at NI to file a CAR on this behavior, assuming these options don't solve the problem.  I'm no longer with NI, or I would do it.

cbutcher
Trusted Enthusiast Trusted Enthusiast
Trusted Enthusiast
on

I use a VI which carries out some pre-Pre Launch Init tasks (like bundling private data used in PLI.vi) and provides the class wire as an output (this VI is a member of the library, but not the class). Then other VIs outside of the library can use the creation VI, but can't directly drop the class object.

 

Running down the list of Virtual Folders in the class and setting each to 'Unspecified' (they were previously 'Public', which prevented changing access scope of the VI directly) then setting the VI to private, saving all, then setting public, saving all, still gave no Actor Framework section in the right-click menu. (I didn't know, but it seems that you can use the Create Abstract Message for Caller option even when the class is private. I guess that makes sense!)

 

Closing the project and reopening made no difference. Neither did closing LabVIEW entirely and reopening.

 

Should I open a support request regarding a possible CAR? I think in the past, I have only seen them picked up from forum posts, but I assume that is the appropriate method. I wasn't sure to what extent I should expect help, given that using the shipped file rather than the one from this thread prevents the problem from appearing (at a cost of a slower right-click menu in the IDE).


GCentral
Contributors