是这样的,我做了一个线程池的例子,创建了三个线程。
运行后在任务管理器发现这个应用程序只有一个运行线程!
我只知道线程池可以减少线程的数量,但为什么只有一个呀?using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace Prog
{
    class ThreadPoolDemo
    {
        public void LongTask1(object obj)
        {
            for (int i = 0; i <= 999; i++)
            {
                Console.WriteLine("Long Task1 is being executed");
            }
        }        public void LongTask2(object obj)
        {
            for (int i = 0; i <= 999; i++)
            {
                Console.WriteLine("Long Task2 is being executed");
            }
        }        public void LongTask3(object obj)
        {
            for (int i = 0; i <= 999; i++)
            {
                Console.WriteLine("Long Task2 is being executed");
            }
        }
        static void Main(string[] args)
        {
            ThreadPoolDemo tpd = new ThreadPoolDemo();
            for (int i = 0; i < 50; i++)
            {
                ThreadPool.QueueUserWorkItem(new WaitCallback(tpd.LongTask1));
                ThreadPool.QueueUserWorkItem(new WaitCallback(tpd.LongTask2));
                ThreadPool.QueueUserWorkItem(new WaitCallback(tpd.LongTask3));
            }
            Console.Read();
        }
    }
}

解决方案 »

  1.   


    可能是执行的太快了
    用 Sleep 多睡一会儿
      

  2.   

    我仔细看过了,任务管理器里每一个应用程序都有一个相对应的线程数,
    如果不用线程池,则线程数可以达到几十个!using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    namespace Prog
    {
        class ThreadDemo
        {
            public void LongTask1()
            {
                for (int i = 0; i <= 999; i++)
                {
                    Console.WriteLine("Long Task1 is being executed");
                }
            }        public void LongTask2() 
            {
                for (int i = 0; i <= 999; i++)
                {
                    Console.WriteLine("Long Task2 is being executed");
                }
            }        public void LongTask3(object obj)
            {
                for (int i = 0; i <= 999; i++)
                {
                    Console.WriteLine("Long Task2 is being executed");
                }
            }
            static void Main(string[] args)
            {
                ThreadDemo thread = new ThreadDemo();
                for (int i = 0; i  < 50; i++)
                {
                    Thread t1 = new Thread(new ThreadStart(thread.LongTask1));
                    t1.Start();
                    Thread t2 = new Thread(new ThreadStart(thread.LongTask2));
                    t2.Start();            }
                Console.Read();
            }
        }
    }