I opened the code and was missing a DLL and some controls so I was not able to run it. However I still may be able to help.
Basically I have never had a need for impeded event structures because they are very hard to get right, and in general are not needed. I believe some of the event structure caveats mention this, or the 2 events in a loop are similar.
Anyways the reason it is dangerous is that they can lock each other. As soon as your VI starts running the structures start watching for value changes. They all share the same event queue so they are all watching the same stack of events.
So in your code if I hit the Buttons.Save Data button and then I decide to hit it again, or I decide to hit the Buttons.Stop your VI will lock up. If I then hit the S
aveAssay button it does not matter.
Here is the reasoning. The queue of events looks like: Save Data, then Stop, and then SaveAssay. The SaveData is handled first so I enter that case. Now before I finish that events code, I must run the impeded event structure due to dataflow. However because I hit Stop next, it is the next thing in the event queue. The impeded event structure is waiting for a SaveAssay or SaveBaseline event, and will not finish until it can process that event.
However LabVIEW events can not be thrown away so the Stop MUST be handled before the SaveAssay can. So in your case the event structure is waiting to handle the SaveAssay but the Stop must be handled first. However the stop can not be handled until the SaveData finishes, which it can�t.
Therefore you end up locked. LabVIEW can not finish the handling of one event until another is handled, and data flow won�t allow that.
Sorry for the novel here. If you have any questions let me know, I real
ize this is a confusing answer, but the issue is complicated.