【发布时间】:2016-06-22 21:28:53
【问题描述】:
我需要在特定时间后执行一个函数,因此我使用此代码。
_start = DateTime.Now;
await Task.Delay(_app.Settings.AudioFileStartVarianz.BaseSpan).ContinueWith(x =>
{
Console.WriteLine(DateTime.Now - _start);
});
假设我想等待正好 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);
- 00:00:00.0405879
- 00:00:00.0404284
- 00:00:00.0402117
- 00:00:00.0404908
- 00:00:00.0409088
但现在我遇到了问题,该函数没有异步运行,这是什么不好,因为我正在播放音频文件 (NAudio)。
有什么想法可以在这里等待异步,以便我的音频文件不会停止吗?
韩国曼努埃尔
【问题讨论】:
标签: c# multithreading asynchronous sleep