线程为什么会不停的增多 不知道是哪里在不断的增加线程

线程为什么会不断的增多 不知道是哪里在不断的增加线程
 Task tsk = new Task(() =>
             {
                 Thread thr;
                 int a = 0;
                 while (a < 50)
                 {
                     a++;
                     //ThreadPool.QueueUserWorkItem((b) =>
                     //{
                     thr = new Thread(() =>
                     {
                         timer.Elapsed += new System.Timers.ElapsedEventHandler((x, y) =>
                        {
                            string strtemp = HttpHelper.HttpRequestByPost("http://localhost/Ashx/ResponseFormHandler.ashx", "keys=sfsfs&content=111");
                            Thread.Sleep(1000);
                            Console.WriteLine(strtemp);
                        });
                         timer.Start();
                     });
                     thr.IsBackground = true;
                     thr.Start();
                     //});
                     Thread.Sleep(200);
                 }
             });
            tsk.Start();
            tsk.ContinueWith((a) =>
            {
                Console.WriteLine("ok ok");
            });

 HttpHelper.HttpRequestByPost 内部 thread.sleep(300);
------解决思路----------------------
不断增多是多少,你又是如何得出"不断增多"的结论的?
你把http请求放到了timer里,这不变成即使只有1个线程在工作,也会每秒去请求一次了吗
------解决思路----------------------
开了50个线程只为了给timer上添加50个任务,最后timer每次触发都执行那50个任务,如果在timer下次触发前任务没执行完,timer就会再用一个线程,所以线程在增加。
------解决思路----------------------
你timer间隔3000调用一次,而方法里sleep(4000)
那当然是一次调用没有结束,就会执行下一次的调用

实际上就是前一个线程没有退出,就建立了一个新的线程