public void RunAsyncInput(GraphStageLogic logic, object evt, Action<object> handler)
{
if (!IsStageCompleted(logic))
{
if (IsDebug) Console.WriteLine($"{Name} ASYNC {evt} ({handler}) [{logic}]");
var currentInterpreterHolder = CurrentInterpreter.Value;
var previousInterpreter = currentInterpreterHolder[0];
currentInterpreterHolder[0] = this;
try
{
ActiveStage = logic;
try
{
handler(evt);
}
catch (Exception e)
{
logic.FailStage(e);
}
AfterStageHasRun(logic);
}
finally
{
currentInterpreterHolder[0] = previousInterpreter;
}
}
}