示例#1
0
        public void Run()
        {
            // On init chaque "employé"
            foreach (IBusinessProcess businessProcess in _employees)
            {
                businessProcess.Init();
            }

            while (true)
            {
                try     {
                    for (int i = 0; i < _employees.Count; i++)
                    {
                        // On fait travailler chaque employé à tour de role, tant qu'ils ont du travail
                        if (!WorkerRole.ShouldStop && _employees[i].Work())
                        {
                            // i=-1 : pour se concentrer sur une tâche en particulier
                            i = -1;
                            CustomSleeper.Reset();
                        }
                    }
                    // If I have not to work or no work
                    Sleep();
                }
                catch (Exception e) {
                    LogException(e, LogsTypes.DevFailure);
                    // 2 minutes au bagne, il n'y a pas a en avoir ici.
                    Thread.Sleep(2 * 60 * 1000);
                }
            }
            //function (have to) never return !
        }
示例#2
0
 protected virtual void Sleep()
 {
     CustomSleeper.Increment();
     Trace.WriteLine("Thread " + Name + ", no more message, sleep " + CustomSleeper.TimeToSleep + "s", EnumUtils.AsString(LogsTypes.Verbatile));
     CustomSleeper.Sleep();
 }