Necronomison
New member
Hi there!
I know I posted a similar question here:
https://www.opsive.com/forum/index....gain-after-conditional-abort.8574/#post-42333
In that case it turned out to be the unexpected behavior of mixing parallel tasks with conditional aborts.
I'm seeing a similar issue with this graph below, but this time there's no parallel task. The graph looks like this:
Observed Behavior:
1. The conditional check circled (1) re-evaluates to false while the task to the right of it is running (as expected since their parent Sequence task is set to 'Self' conditional abort)
2. The result of that sequence branch failing then fails the parent sequence task above (circle 2), and so the Selector task above moves over to the right branch.
3. Conditional task circled (3) evaluates to true (as expected, its the same boolean check as circle 1)
4. Custom task (circle 4) then runs twice immediately in a row (not expected). Putting a breakpoint shows the following calls in order: OnStart(), OnEnd(), OnStart(), OnEnd().
What's curious is The first pair of OnStart and OnEnd calls happen instantaneously, where the OnEnd() callstack shows that it was invoked because of a conditional import.
Here are the four callstacks:
1).
2).
3).
4).
Basically, I don't understand where the first pair of OnStart() OnEnd() calls are coming from. More curious is that the second OnEnd() seems to be invoked because of a conditional abort (see the red underling in the second callstack image).
Any help would be greatly appreciated!
I know I posted a similar question here:
https://www.opsive.com/forum/index....gain-after-conditional-abort.8574/#post-42333
In that case it turned out to be the unexpected behavior of mixing parallel tasks with conditional aborts.
I'm seeing a similar issue with this graph below, but this time there's no parallel task. The graph looks like this:
Observed Behavior:
1. The conditional check circled (1) re-evaluates to false while the task to the right of it is running (as expected since their parent Sequence task is set to 'Self' conditional abort)
2. The result of that sequence branch failing then fails the parent sequence task above (circle 2), and so the Selector task above moves over to the right branch.
3. Conditional task circled (3) evaluates to true (as expected, its the same boolean check as circle 1)
4. Custom task (circle 4) then runs twice immediately in a row (not expected). Putting a breakpoint shows the following calls in order: OnStart(), OnEnd(), OnStart(), OnEnd().
What's curious is The first pair of OnStart and OnEnd calls happen instantaneously, where the OnEnd() callstack shows that it was invoked because of a conditional import.
Here are the four callstacks:
1).
2).
3).
4).
Basically, I don't understand where the first pair of OnStart() OnEnd() calls are coming from. More curious is that the second OnEnd() seems to be invoked because of a conditional abort (see the red underling in the second callstack image).
Any help would be greatly appreciated!