Exemple #1
0
        private void analyseMessages()
        {
            while ((Thread.CurrentThread.IsAlive) && (!Program.DoExit))
            {
                int availableWorkerThreads;
                int availablePortThreads;

                ThreadPool.GetAvailableThreads(out availableWorkerThreads, out availablePortThreads);

                if (availableWorkerThreads == 0)
                {
                    Thread.Sleep(500);
                    continue;
                }

                var users = FakeData();
                foreach (var user in users)
                {
                    AnalysingTaskInfo ati = null;
                    if (user.Gender == Gender.Male)
                    {
                        ati = new AnalysingTaskInfo(user, new MaleAnalyser());
                    }
                    else // if (user.Gender == Gender.Female)
                    {
                        ati = new AnalysingTaskInfo(user, new FemaleAnalyser());
                    }

                    if (ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadAnalyse.AnalyseOne), ati) == false)
                    {
                        log.Error("Unable to queue ThreadPool request.");
                    }
                }
            }
        }
Exemple #2
0
        public static void AnalyseOne(Object stateInfo)
        {
            AnalysingTaskInfo ati = (AnalysingTaskInfo)stateInfo;

            ati.Analyser.Log(ati.user);
        }