Beispiel #1
0
        protected override ExecuteState Execute(ITodoHost host, DateTime utcBatchNow)
        {
            //-------------------------------------------------------------------------------
            if (SysState == State_SpawnProcess)
            {
                try
                {
                    DemoProcess.Spawn(PID, PartCount);
                    return(State_EnqueueWorkParts);
                }
                catch (Exception error)
                {
                    host.Log(MessageType.Error, this, "Execute().SpawnProcess", error.ToMessageWithType(), error);
                    return(ExecuteState.ReexecuteAfterError);
                }
            }

            //-------------------------------------------------------------------------------
            if (SysState == State_EnqueueWorkParts)
            {
                try
                {
                    var todo = MakeNew <WorkPartDemoProcessTodo>();
                    todo.PID = PID;
                    PartCount--;
                    m_IsModified = true;
                    todo.Part    = PartCount;
                    AgniSystem.ProcessManager.Enqueue(todo, "todo", "todoqueue");
                    return(PartCount == 0 ? ExecuteState.Complete : State_EnqueueWorkParts);
                }
                catch (Exception error)
                {
                    host.Log(MessageType.Error, this, "Execute().EnqueueWorkParts", error.ToMessageWithType(), error);
                    return(m_IsModified ? ExecuteState.ReexecuteUpdatedAfterError : ExecuteState.ReexecuteAfterError);
                }
            }

            throw new WorkersException(StringConsts.UNKNOWN_TODO_STATE_ERROR.Args(GetType().Name, SysState));
        }
Beispiel #2
0
 public static async Task Main(string[] args)
 {
     var process = new DemoProcess();
     await process.Run();
 }