我有一个背景刻度功能,其结构如下:
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/