It's a bit unintuitive, but showing a Dialog Trees isn't Blocking, (so that the player can still have control, and can save the game if they want, etc)
So you might have to split your logic into separate functions for each Dialog tree, and call them one at a time, from UpdateBlocking. You can check if D.Current ==null there to see if there's one showing. D.Previous also shows the last dialogue tree used if that's helpful.
Actually, another alternative which might suit you better though is to use E.WaitForInlineDialog, which *is* a blocking function...
https://powerquest.powerhoof.com/interface_power_tools_1_1_quest_1_1_i_power_que...