protected override void StartBatchComplete(int hrBatchComplete) { if (HrStatus != 0) { SetAbort(); _stopProcessing?.Invoke(); } else { SetComplete(); } }
internal static void StartMessageLoop() { if (MessageLoopRunning) { ABSLog.ThrowError("An attempt to made to start a message loop while one was already running!"); } MessageLoopRunning = true; Task.Run(async() => { while (true) { // Run immediate processes. while (ImmediateProcesses.TryPeek(out Process immediateProcess)) { immediateProcess.ProcessIsRunning = true; await immediateProcess.ExecuteAsync(); ImmediateProcesses.TryDequeue(out _); } // Run background processes. if (BackgroundProcesses.TryPeek(out Process backgroundProcess)) { backgroundProcess.ProcessIsRunning = true; await backgroundProcess.ExecuteAsync(); BackgroundProcesses.TryDequeue(out _); } else { StopProcessing?.Invoke(null, null); waitForNext.Wait(); if (!MessageLoopRunning) { return; } waitForNext.Reset(); StartProcessing?.Invoke(null, null); } } }); }