Thanks for your input.
I will probably keep the "create" VI running (wait until done=false) and implement more functions like reconnection on error, tester present and others.
As long as that VI does not finish, everything works fine.
My Main.vi inserts VIs into a subpanel and runs them.
In the first VI that is run in that subpanel a Diagnostic Connection is created, the session ref is written to a global variable.
In the second VI that is run in that subpanel the session ref is read from global variable and used.
The reference handle or whatever is used internally seems to be lost when the first VI that creates it finishes. I get an error -8000 "Handle passed to the function is not valid" in the "sub.vi".
I can pass other classes like ModbusTCPMaster without any problems with this method.
Any ideas?