我有一个背景刻度功能,其结构如下:

    System.Threading.Thread myTimerThread = new Thread(this.Tick);

    private void Tick(){
       do{
          //do stuff
          System.Threading.Sleep(1000L);
       }while(true)
    }

但是,还有一个System.Threading.Timer类可以为我执行此操作。使用System.Threading中存在的内置Timer类而不是使用Tick函数创建自己的后台线程有什么区别?

最佳答案

与您自己的专用线程相比,Timer类的重量很轻,效率更高,后者在无限的do while循环中休眠了指定的时间。

请阅读Thread.Sleep is a sign of a poorly designed program,以了解Thread.Sleep的实际工作方式以及其浪费整个线程和资源的方式。

另一方面,System.Threading.Timer将使用ThreadPool线程执行计时器。如我的MSDN所述,使用Timer类的其他好处



您将不会在基于线程的方法中获得这些好处

关于c# - System.Threading.Timer和在C#中创建自己的背景刻度线之间有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8928851/

10-14 05:13