当前位置:编程学习 > C#/ASP.NET >>

C#代码运行计时类

1     public class OperationTimer : IDisposable
 2     {        
 3         private Int64 m_startTime;
 4         private string m_text;
 5         private Int32 m_CollectionCount;
 6 
 7         public OperationTimer(string text)
 8         {
 9             m_startTime = Stopwatch.GetTimestamp();
10             m_text = text;
11         }
12 
13         public void Dispose()
14         {
15             string text = string.Format("Time={0,6:###.00}", (Stopwatch.GetTimestamp() - m_startTime) / Stopwatch.Frequency);
16             Console.WriteLine(string.Format("{0}:{1}", m_text, text));
17         }
18     }

 
试了一下果然很好用。程序很简单,就是在一个类继承自IDisposable接口的类的构造函数中记录下开始时间,在销毁时计算一下时间差,就可得到相应的执行时间。使用也很巧妙,直接 using (OperationTimer op=new OperationTimer ("Generic ")){...} ,很爽很简洁的实现了想要的功能。
 
    不过有个小情况,就是本人平时时 asp.net 下写的代码,如果每次都拿到控制台中运行,不太方便,如果能改造一下,让这个类既能在控制台下运行也可以在asp.net 的环境下方便使用就好了。
 
    看了一下这个类的实现原理,由于是在类被销毁时才计算运行时间差,没有更多的空间可以去获取这个时间。似乎只有搞一个委托,让程序要以在销毁时执行,把这个时间传递需要的地方。呵呵,写了这么久的程序,也看了很多次的委托,因为实际中基本没有用上过,所以对写法不太熟,正好重温一下。下面是改造过程。
 
  第一步:将这个类按自己习贯的方式修改一下命名,并为了能简单调用,增加了一个构造函数,代码如下:
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,