c#的timer控件计时不够准确,有啥办法可以替代吗,我需要10ms左右的精度,但是timer很不准确

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#的timer控件计时不够准确,有啥办法可以替代吗,我需要10ms左右的精度,但是timer很不准确相关的知识,希望对你有一定的参考价值。

form.timer大概精确度在17ms左右,还要里面不能执行太多东西。
你可以建议一个最高优先度的线程,使用sleep来计时追问

试过了,的确是,但是现在sleep也不行,不知道还有别的办法没

参考技术A .NET中有好几个Timer,精度是不一样的,
System.Timers

System.Threading

System.Windows.Forms
你可以尝试第一个追问

该方法不行

参考技术B 用System.Diagnostics.Stopwatch试试吧追问

可以具体点吗?谢谢

追答

你是要怎么使用这个定时(或者说是延时)??

    namespace : System.Diagnostics
    Stopwatch sw = new Stopwatch();
            sw.Start();
            for (int i = 0; i < 1000000000; i++)
            
                ++i;
            
            sw.Stop();
            TimeSpan ts = sw.Elapsed;

本回答被提问者采纳

(30)C# Timer类

有三种Timer

1、System.Windows.Forms.Timer

 应用于WinForm中,它的主要缺点是计时不精确,而且必须有消息循环,Console  Application(控制台应用程序)无法使用,优点简单易用

 把Timer控件拖到窗体下

 

右键设置timer属性

 有两个常用属性

Enabled 设置成True (默认是false)运行后就可以自动执行了

Interval 设置时间间隔多久运行一次 单位是毫秒, 1000毫秒等于1秒钟

双击timer1控件开始写代码

 private void timer1_Tick(object sender, EventArgs e)
        {
            MessageBox.Show("hello");
        }

运行程序,这样会每秒钟弹出一个hello的提示框一直运行下去。。。。。

 

控制定时器开关

       private void button1_Click(object sender, EventArgs e)
        {
            timer1.Start();//开始
            //timer1.Enabled = true;//开始    
        }

        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Stop();//停止
            //timer1.Enabled = false;//停止
        }

timer1 是控件的名称

 

2、 System.Timers.Timer

 和System.Windows.Forms.Timer类似但需要自己定义属性

 

3、System.Threading.Timer

以上是关于c#的timer控件计时不够准确,有啥办法可以替代吗,我需要10ms左右的精度,但是timer很不准确的主要内容,如果未能解决你的问题,请参考以下文章

C# 使用Timer控件设置时间间隔

C# 如何用计时器Timer控件实现停留几秒再做切换窗体的操作

VB.net 如何设定准确的1秒时间?

c#计时器如何保存计时

c# timer如何设定一个2分钟的倒计时,并且到时间只执行一次 ?

C# Timer-Filter 命令