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."); } } } }
public static void AnalyseOne(Object stateInfo) { AnalysingTaskInfo ati = (AnalysingTaskInfo)stateInfo; ati.Analyser.Log(ati.user); }