StopWatch(System.Diagnostics)和System.Timers

时间:2009-10-09 09:07:44

标签: c# multithreading timer operations

我是处理线程的新手。

System.Diagnostics和System.Timers在线程上下文中的作用是什么? 两者都是相互替代的,或者是为了完成一些独特的任务而实现的?

4 个答案:

答案 0 :(得分:11)

StopWatch用于测量时间间隔。定时器用于调度在将来的某个时刻执行的方法。它们完全不同。

答案 1 :(得分:3)

System.Diagnostics命名空间提供了允许您与系统进程,事件日志和性能计数器进行交互的类。

System.Timers命名空间提供了Timer组件,允许您按指定的时间间隔引发事件。

答案 2 :(得分:1)

请谨慎使用System.Timers。

.Net中基本上有三个计时器

System.Timers.Timer
System.Threading.Timer
System.Windows.Forms.Timer

Three Timers available in .Net

需要注意的关键是收集问题。

如果您的线程在某个点之后没有引用某个对象,则可以对其进行垃圾回收。这实际上是IDisposable模式的关键原因之一,因为调用dispose意味着保持对象存活,直到至少在dispose()调用结束时。这是当你说

时调用的方法
using(var myobj = new System.Threading.Timers()) 
{
    //run program here 
} //Timer can be collected from now.

答案 3 :(得分:0)

作为另一种选择,我一直在我的应用程序中使用BackgroundWorker class并取得了良好的效果