1 c#用settimer()功能
private TimerProc Cb = null;
[DllImport("user32")]
private static extern int SetTimer(IntPtr hwnd, int nIDEvent, int uElapse, TimerProc CB);
[DllImport("user32")]
private static extern int KillTimer(IntPtr hwnd, int nIDEvent);
private delegate void TimerProc(IntPtr hWnd, uint nMsg, int nIDEvent, int dwTime);
public Form1()
{
InitializeComponent();
Cb = new TimerProc(this.OnTickTimer);
}
private int ID_CB_Timer;
private void button1_Click(object sender, EventArgs e)
{
ID_CB_Timer = SetTimer(IntPtr.Zero, 0, 1, Cb);
}
private void OnTickTimer(IntPtr hWnd, uint nMsg, int nIDEvent, int dwTime)
{
do```something;
}
2 操作精确计时
[DllImport("kernel32.dll")]
extern static short QueryPerformanceCounter(ref long x);
[DllImport("kernel32.dll")]
extern static short QueryPerformanceFrequency(ref long x);
//duration = (stop - start) / frequency
//经过时间 = (停止时间 - 开始时间) / 频率
long ctr1 = 0, ctr2 = 0, freq = 0;
QueryPerformanceCounter(ref ctr1);
do something!
QueryPerformanceCounter(ref ctr2);
QueryPerformanceFrequency(ref freq);
经过的时间
((ctr2 - ctr1) * 1.0 / freq) 单位s