protected override async Task Execute(WorkflowInstance instance) { if (Delay.Value > 0) { Func <Task> delayFunc; if (UseTaskDelay.Value) { delayFunc = async() => await Task.Delay(Delay.Value); } else { delayFunc = async() => await Task.Run(() => Thread.Sleep(Delay.Value)); } if (UseWorkflowDelay.Value) { await instance.EnterWorkflow(Create(delayFunc)); } else { await delayFunc(); } } Number.Lock(() => { Number.Value += 1; }); }
protected override async void OnEnterState() { var printingWorkflow = new DelayWorkflow( Workflow.Create( async() => { await WorkflowInstance.Action("Done"); }), 500); await WorkflowInstance.EnterWorkflow(printingWorkflow, false); }
private async Task OnContactForAssignment() { if (EscalationTimeout.Value == int.MaxValue) { return; } var escalationTime = DateTime.Now.AddMilliseconds(EscalationTimeout.Value); var delayUntilWorkflow = new DelayUntilConditionWorkflow( Create( instance => { HasEscalated.Value = true; }), () => IsBooked.Value, escalationTime, true); await WorkflowInstance.EnterWorkflow(delayUntilWorkflow, false); }