c# - 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();
}
}
}
}
知道这个错误是什么,我该如何解决?谢谢!
解决方案
推荐阅读
- r - 如何用值替换数据框中每一行的中间和左侧的NA?
- python - JSON对象的名称在传递时出现在JSON本身中?
- python - 在 python 中执行二维矩阵过滤的有效方法是什么?
- javascript - 在 JavaScript For 循环期间更新 DOM
- ios - 为什么我不能使用 manager.locationServicesEnabled()
- php - 使用php从while循环语句中的不同表中获取值
- database - MAC 上的 cassandra.yaml 位置在哪里?
- html - 未应用样式表
- javascript - 是否可以在没有内联函数的情况下从 reduce 和 curry 创建 sum 函数?
- vue.js - db 错误,axios get 方法返回(TypeError:int() 参数必须是字符串、类似字节的对象或数字,而不是 'AnonymousUser')500