小编Man*_*uth的帖子

任务延迟与线程睡眠分辨率精度

我需要在特定时间后执行一个函数,因此我使用此代码。

_start = DateTime.Now;
await Task.Delay(_app.Settings.AudioFileStartVarianz.BaseSpan).ContinueWith(x => 
        {
            Console.WriteLine(DateTime.Now - _start);

        });
Run Code Online (Sandbox Code Playgroud)

假设我想等待 0.04 秒。我现在的问题是它的工作不够精确。调用该函数 5 次后,我得到以下输出:

  • 00:00:00.0414220
  • 00:00:00.0536098
  • 00:00:00.0507841
  • 00:00:00.0467757
  • 00:00:00.0425790

如果我使用此代码,效果会更好

        _start = DateTime.Now;
        Thread.Sleep(_app.Settings.AudioFileStartVarianz.BaseSpan);
        Console.WriteLine(DateTime.Now - _start);
Run Code Online (Sandbox Code Playgroud)
  • 00:00:00.0405879
  • 00:00:00.0404284
  • 00:00:00.0402117
  • 00:00:00.0404908
  • 00:00:00.0409088

但是现在我遇到了问题,该功能没有异步运行,这有什么不好,因为我正在播放音频文件(NAudio)。

有什么想法可以在这里等待异步,这样我的音频文件就不会停止吗?

KR曼努埃尔

c# multithreading sleep asynchronous

3
推荐指数
1
解决办法
1860
查看次数

标签 统计

asynchronous ×1

c# ×1

multithreading ×1

sleep ×1