Timer 事件中的 执行时间 超过 设定的周期。1、MSDN上说 后面的 线程会等待前面的结束,所以 当我后面还有 50个线程 等待执行(因为前面超时的原因),我stop 计时器后面的 线程不会增加 但是会继续执行。问题来了。。这些线程 执行完了 不会自动退出using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using pSpaceCTLNET;
using System.Threading;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
           
            t.Interval = 100;
            t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
            t.Disposed += new EventHandler(t_Disposed);
            t.Start();
            while (Console.ReadLine()!="Y")
            {
            }
            t.Stop();
            Console.WriteLine("已停止");
            t.Dispose();
            Console.WriteLine("以释放");
            
            
            Console.ReadLine();
        }        static void t_Disposed(object sender, EventArgs e)
        {
            Console.WriteLine("释放事件");
            t.Container.Dispose();
        }        static void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {            Thread.Sleep(10000);
            
            Console.WriteLine("a"+DateTime.Now);
        }
        static System.Timers.Timer t = new System.Timers.Timer();
    }
}

解决方案 »

  1.   

    参考:http://blog.csdn.net/luols/archive/2010/09/13/5880232.aspx
      

  2.   

    参考什么啊 哥哥 = =! 你听懂我说的么 你就想告诉我 停止计时器 调用stop就行了 是吧??
      

  3.   

    没看明白,没看到你申请多少个线程,就是一个timer在跑.
      

  4.   

    你试试不要使用timer,使用线程级timer
      

  5.   

    因为 我用的 不是 控件的Timer 是System.Timers.Timer这个Timer 是一个 线程池 每次到周期所要执行的函数 都是开一个线程来工作的。。大家可以试试我的代码 然后在 任务管理器 里面查看