首页 > 解决方案 > Thread.Sleep & Task.Delay 的奇怪行为

问题描述

我开始开发一个简单的控制台节拍器,我注意到节拍之间的时间出现了问题。

在我设置速度并启动节拍器后,哔声正常工作了一段时间,然后它打破了单调的节奏,开始以奇怪的节奏播放不准确的哔声。

此外,随着节奏的增加,哔声的持续时间开始变短(切掉它)。


我总是在 200 毫秒的几秒钟后得到错误,所以只需在这个速度下测试它,但是当你降低它(意味着增加哔声之间的间隔)时,问题会越来越晚,直到它完全消失(大约在 7 -800 毫秒)。

顺便说一句,我使用什么方法(睡眠或延迟)都没有关系......


这是一个包含问题的非常简化的代码。

using System;
using System.Threading;
using System.Threading.Tasks;

namespace Temporary
{
    class Program
    {
        static void Main()
        {
            while (true)
            {
                Console.Beep(2000, 200);
                Thread.Sleep(200);
                //Task.Delay(200).Wait();
            }
        }
    }
}

知道这个错误是什么,我该如何解决?谢谢!

标签: c#runtime-errorbeep

解决方案


推荐阅读