static void Main(string[] args) { var pool = new ApplicationThreadPool("test", 16, 1024, true); var tasks = new ApplicationThreadPool.TaskState[pool.MaxThreads]; for (var i = 0; i < pool.MaxThreads; ++i) { tasks[i] = pool.QueueUserTask(o => { Console.WriteLine("Hello"); }); } ApplicationThreadPool.TaskState.WaitAll(tasks); Console.WriteLine("Finished"); Console.ReadLine(); }
static void Main(string[] args) { var pool = new ApplicationThreadPool<Context, State>(() => new Context(), null, "test", 16, 1024, true); var activeThreads = pool.MaxThreads; for (var i = 0; i < pool.MaxThreads; ++i) { pool.QueueUserWorkItem((c, s) => { c.Write(s.Text); Interlocked.Decrement(ref activeThreads); }, new State(i.ToString())); } while (activeThreads > 0) { Thread.Sleep(0); } Console.WriteLine("Finished"); Console.ReadLine(); }