Azzera filtri
Azzera filtri

App designer app calls sub apps, better to leave as .mlapp or compile each one to .exe?

4 visualizzazioni (ultimi 30 giorni)
I'm designing an app in app designer. It calls several sub apps. Some of these do their own processes, some of them are simply complex dialogue boxes.
At the moment, when I run the app in App designer to test it out, all the apps are still in .mlapp format. My question is, when I finally compile my main app should I compile each sub app separately myself and include their .exes in the file list? Or leave them in .mlapp format and let the compiler deal with them? Does it make a difference?
  1 Commento
Neurolab
Neurolab il 29 Mar 2024
For an example of a dialogue box sub app you can see this Mathworks walkthrough, but it doesn't mention what to do when it comes to compiling the app(s):
https://www.mathworks.com/help/matlab/creating_guis/creating-multiwindow-apps-in-app-designer.html

Accedi per commentare.

Risposta accettata

Eric Delgado
Eric Delgado il 1 Apr 2024
Modificato: Eric Delgado il 1 Apr 2024
Yes, there's a significant difference! Keeping the files as .MLAPP means only one session of the MATLAB Runtime will run on the user's machine.
However, if you directly compile auxiliary modules and include their .EXE in your project, calling a .EXE module will create a separate session of MATLAB Runtime each time. Consequently, you won't have a handle for the auxiliar app, preventing information exchange between your main app and the auxiliar one.
Beyond that, this would lead to a poor user experience, given that the MATLAB Runtime takes between 10 and 20 seconds to load.
  2 Commenti
Neurolab
Neurolab il 1 Apr 2024
At the moment the parent app is passed as an input argument to the sub-app, you are saying that if the sub app is compiled separately this will no longer work? Is there any way to alert the parent app that the sub app has completed it's task?
10-20 seconds might not actually be a problem because the sub app only needs to be called once and is expected to be doing it's task for a little while.
Eric Delgado
Eric Delgado il 1 Apr 2024
Modificato: Eric Delgado il 1 Apr 2024
Unfortunately, calling a .EXE file (created in MATLAB) initiates a new process (MATLAB Runtime) in your operating system. For this reason, you lose access to the app's public properties and methods within this new process.
If you proceed with this approach, you'd be forced to rely on mechanisms like external files or tcp-sockets to facilitate information exchange between applications running in different processes of your operating system. However, I don't think this is a good ideia! :)
I forgot to answer your last question ("Is there any way to alert the parent app that the sub app has completed it's task?"). So... maybe the answer that you are looking for is here: https://www.mathworks.com/help/matlab/ref/parallel.pool.dataqueue.html

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Develop Apps Using App Designer in Help Center e File Exchange

Prodotti


Release

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by