06-18-2020 02:40 AM
I have a project with a deep VI hierarchy, the executable that built from this project takes ~10 seconds to load all the VIs and show its front panel.
That's why I decided to add a splash screen vi to dynamically load the Core.vi, the BD looks like this:
I also set the priority of the splash screen vi to the highest.
However, the new executable takes ~9s to display the splash screen😂... the front panel of the core.vi shows up shortly after.
How can I show the splash screen immediately after the user opens the executable?
Thanks in advance!
06-18-2020 06:19 AM
@Nochenon233 wrote:
I also set the priority of the splash screen vi to the highest.
That is not necessary. In fact, I have actually seen that cause issues on a Windows machine. Just leave it at a normal priority.
06-18-2020 07:26 AM - edited 06-18-2020 07:27 AM
Splash screens, and just getting a VI to display its front panel when you want it to, instead of when LabVIEW wants to, has always been a bit tricky (especially delaying front panel showing, which is the opposite of what you are trying to do).
Try to explicitly open the front panel using dataflow to ensure that's one of the first things that happens. Definitely have it happen before you load your main VI.
06-18-2020 10:02 AM
Thanks, noted!
06-18-2020 10:18 AM
Hi Bill,
Thanks for the reply, unfortunately, the issue seems persists:
I also prepared a project (LV2019) for you (or anyone who is also interested) to test, which contains two core VIs, one referenced a huge set of dependencies, and the other is blank. The build specifications are already set up, you only need to build and try yourself.
Regards
06-18-2020 10:26 AM
Nochenon233,
Are you an NI employee? You have a blue bar. I'd think you'd have internal resources to help you.
One thing I noticed. You have a case structure with a False wired to it, and a bunch of dependencies in the true case to "increase dependency complexity".
Note that when the is compiled into an executable, the compiler recognizes that none of those subVI's are called and will strip them from the .exe. This was a compiler change around the time of LabVIEW 8.0 (??). If you want to make sure dependencies are compiled, but never run, wire a boolean control set to False to the case structure. That tricks the compiler into not knowing whether those dependencies would run or not and thus forces it to include them.
Another thing, is there a reason you are using LabVIEW 64bit? General recommendations are to use 32 bit unless there is a specific need such as large data sets that require using 64 bit LabVIEW. (I don't think that would cause an issue with your splash screen, but you never know.)
06-18-2020 10:43 AM
Hi RavensFan,
1. Yes, I've already consulted some of my colleagues but they're also not sure, I'll definitely try to dig up more info.
2. You got a good point on the second one, however, the compiler will not skip these dependencies in my case because I unchecked "Remove unused libraries" in the build spec.
3. Not much of a reason, because everyone is using 64bit...😂
Thanks for the suggestion!
Regards