相关疑难解决方法(0)

什么是计时器滴答,秒表使用的单位.ElapsedTicks

我曾经这么认为

  • Stopwatch.ElapsedTicks 等于
  • Stopwatch.Elapsed.Ticks.

但事实并非如此.虽然后者是100纳秒的时期,但前者使用了一个神秘的单位timer ticks.我想知道它们是什么,为什么它们与通常的测量单位不同?

.net timespan stopwatch

11
推荐指数
2
解决办法
6689
查看次数

Thread.Sleep(1)花费的时间超过1毫秒

我搜索了这个问题,但没有看到答案.如果它是重复的,我很乐意关闭它.

我目前正在尝试对某项技术进行一些性能评估,并看到一些相当令人难以置信的结果,所以我决定尝试一些.在那我想试着看看秒表类是否回归了我的预期.

Stopwatch sw = Stopwatch.StartNew();
Thread.Sleep(1);
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我几乎看到了15毫秒的返回值.我理解DateTime的分辨率在那附近但是不应该Thread.Sleep(1)睡一个线程1ms?我所使用的系统返回Stopwatch.IsHighResolution true并在.NET 4中运行.

背景:此代码以完整和正确的形式用于收集有关Aerospike db get请求的一些数字.数据库不在同一个盒子里.当我在查询处于中间时打印出sw.ElapsedMilliseconds时,我看到的主要是亚毫秒响应,这听起来有点怀疑,因为我的Java等效代码在大多数情况下返回更加可信的5ms-15ms响应.Java代码使用的是System.nanoTime()的区别.通过我的C#代码中的submilli响应,我的意思是Console.WriteLine(sw.ElapsedMilliseconds)打印0.

.net c#

9
推荐指数
2
解决办法
2845
查看次数

如何在没有CPU过载的情况下在任务中引入准确的小延迟?

我正在实现一种通信算法来定期和非常快速地发送信息,即包之间的1ms.我有一个使用Tasks发送包的功能版本.这是我的代码示例:

private void Work()
{
    Stopwatch stopwatch = new Stopwatch();
    stopwatch.Start();

    while (!cancellationTokenSource.Token.IsCancellationRequested)
    {
        if (!Pack.PeriodicOn)
            cancellationTokenSource.Cancel();

        // Time used to send the packs before the interval time
        double tolerance = Pack.Interval * 0.2F;

        // In case of interval bigger than 25ms send pasks only 5ms before
        if (tolerance > 5) tolerance = 5;

        TimeSpan timeSpan = stopwatch.Elapsed;

        // The waiting time is controlled by the condition below, if the condition is false, the while loop continues execution         
        // Send …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading task winforms

8
推荐指数
1
解决办法
1010
查看次数

定时器:周期小于一毫秒

作为标题,有没有办法让定时器在毫秒的阈值下工作?

我的问题类似于以下问题,但它适用于Java: Thread.Sleep小于1毫秒

java timer

7
推荐指数
1
解决办法
7010
查看次数

C#中的高分辨率计时器

是否存在高分辨率计时器,每次计时器过去时都会引发事件,就像System.Timer课程一样?Elapse每隔ms 我需要一个高分辨率计时器.

我一直在发帖说明秒表可以测量高分辨率,但我不想测量时间,我想创建一个1毫秒的间隔.

在.NET中有什么东西,还是我要编写自己的高分辨率计时器?

c# timer high-resolution

5
推荐指数
1
解决办法
1万
查看次数

如何使用C#制作秒表

我只想问一下我是否可以使用C#制作秒表:

        private void button2_Click(object sender, EventArgs e)
    {
        timer1.Start();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        int st = 00;
        int m = 00;

        string stime = "00:00";
        if(st == 60)
        {
            m++;
            st = 00;
        }
        else
        {
            st++;
        }
        if (m == 60)
        {
            m = 00;
        }
        if(st < 10)
        {
            st = 0 + st;
        }
        if(m < 10)
        {
            m = 0 + m;
        }
        stime = m.ToString() + ":" + st.ToString();
        label3.Text = …
Run Code Online (Sandbox Code Playgroud)

c# winforms

0
推荐指数
1
解决办法
4750
查看次数