这哪里是精确到千万分之一秒? 这不是TICK吗? 也就是毫秒.
解决方案 »
- C#编写的界面 如何 与 MFC编写的界面 通讯交互
- 求 学生宿舍管理系统 c# (winform )急急·····
- c# windowsfrom 开发,与界面同步的问题,大家看看,应该怎么办
- ActiveX用户不能用,怎么办
- WPF,在视觉树中查找子元素,为什么找不到
- ffmpeg 转码,asf格式转成mp4格式命令如何写
- 在已经有数据的dataset中如何提取数据???
- 请教一个简单的问题,关于类的
- csdn的'管理'页是如何做的?
- 我记得以前有用C#开发的类似于VS.NET左边工具箱的那种代码,但找不到了.:(
- 如何在pictureBox控件中动态加载图像?
- 如何在C#中枚举局域网内的SQL Server
看看这个:using System;
using System.Threading;
using System.ComponentModel;
using System.Runtime.InteropServices;namespace Sanxing.WebComponent.Unit
{
/// <summary>
/// 进行精确操作计时的类。
/// </summary>
public sealed class RunTime
{
// ----- 私有对象
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceFrequency(out long lpFrequency); [DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceCounter(out long lpPerformanceCount); private long startTime,stopTime;
private long freq; /// <summary>
/// 初始化 <see cref="RunTime"/> 类的新实例。
/// </summary>
public RunTime()
{
this.startTime = 0;
this.stopTime = 0; if(QueryPerformanceFrequency(out freq) == false)
throw new Win32Exception();
} /// <summary>
/// 开始执行计时。
/// </summary>
public void Start()
{
Thread.Sleep(0);
QueryPerformanceCounter(out startTime);
} /// <summary>
/// 停止计时。
/// </summary>
public void Stop()
{
QueryPerformanceCounter(out stopTime);
} /// <summary>
/// 获取计时后得到的计时时间。(单位为秒)
/// </summary>
public double DurationSecs
{
get
{
// 判断是否执行了开始和结束
if(startTime == 0 || stopTime == 0)
throw new InvalidOperationException(Resource.GetResource("Unit_TimeVariableIsNull"));
return (double)(stopTime - startTime)/(double)freq;
}
} /// <summary>
/// 获取计时后的计时时间。(单位为毫秒)
/// </summary>
public float DurationMsel
{
get
{
if(startTime == 0 || stopTime == 0)
throw new InvalidOperationException(Resource.GetResource("Unit_TimeVariableIsNull"));
return float.Parse((this.DurationSecs * 1000).ToString("##0.###"));
}
}
}
}