This looks like you are making this more difficult than it has to be, but let me point out some issues.
The dynamic event that you are registering, is for the the save button on the FP of "channelarray.vi".
THe dynamic event is registerd when the VI runs and unregistered latter.
Your "chann..." has no timeout event so waits for the mouse down event of the control on the FP of "chann..."
When you run "chann..." it hangs until the mouse down event fires.
The key point is that the control on the FP of "chann..." has to fire AFTER "chann..." starts to run.
That is how "chann..." is currently coded to run.
When you call "chann..." from ex1.vi the state of the save button is set when "chann..." is called and the boolean cluster is passed, and THEN the vi is run.
There is NOTHING punching the save button.
It looks like all of the execution control code in "chann..." can be simplified by just using a "case structure".
If you are really trying to develop a stand-alone VI that runs in the background to handle saving configuration, then you will have to pass (or obtain) a reference to the control on the FP of teh calling VI (ex1.vi) and register the event to fire on that control.
Next thing;
If you get the event to register and fire the control on the FP on ex1.vi, the state of booleans written will be the state they were in when the vi is called.
If you are trying the do the "run in background thing" you will have to bring in (or obtain) refences fo rthe booleans, so you can read their CURRENT state when the event fires.
Trying to help,
Ben