In which cases would it be advised to make use of a queued QAction?
As you can see in the help (link) the QAction is executed in a separate thread and placed running in the background.
It could be useful in scenarios where you may need to run multiple instances of the same QAction without waiting on each other.
It could also be used when you know a certain operation is going to be lengthy and you do not want that operation blocking others.
Do note that it should always be used with care and implement the correct locking mechanisms when applicable and also make sure that there is protection to avoid infinite loops as RTEs will no longer give you this indication.
Do not use it in case you would want to process parameter sets entering at a high rate. For normal QActions it’s a blocking call and you can get the parameter value of the parameter that triggered it. Queued QActions do not have this blocking call functionality so even if you immediately perform a protocol.GetParameter call you could already retrieve the next parameter value that was present on the setparameter queue. In other words if there are two parameter sets “1” and value “2” on the parameter that triggers the QAction then the QAction will trigger two times but it could be that you read out twice parameter value “2”. Using the inputParameters attribute is also not an alternative to avoid this behavior. I tested this in the past and on a high rate you could also be missing parameter values. As a basic guide I would say only let it trigger by a button parameter that can only have one possible value else you could be doing twice the same thing instead of two different intended actions.