虽然我没这么做过 但是我个人感觉 还是timer好点..

解决方案 »

  1.   


               var timer = new System.Timers.Timer();
                timer.Interval = 1000 * 30;
                timer.Enabled = true;
                timer.AutoReset = true;
                timer.Elapsed += (s, e) =>
                {
                   //do  action 
                };
                timer.Start();
      

  2.   

    个人感觉使用线程比timer灵活,但是需要自己控制具体的触发条件,
    可以避免使用timer导致的重入问题。
    如果循环处理实时性要求不是很高(比如分钟级),用timer方便。
    或者Thread.Sleep的时间适当放大一点,否则空跑浪费系统资源。