protected override void StartBatchComplete(int hrBatchComplete)
 {
     if (HrStatus != 0)
     {
         SetAbort();
         _stopProcessing?.Invoke();
     }
     else
     {
         SetComplete();
     }
 }
示例#2
0
        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);
                    }
                }
            });
        }