我试图在waveOut.play()上运行"await Task.Run".原因是我想要这样做是因为我需要在waveOut.play()完成后立即删除文件.但是,我无法删除已经在使用的东西,这就是为什么我需要使用await task.run,但这次似乎不起作用.这可能是重复但我无法找到任何理由为什么程序不等待它完成.
public async void PlayAudio(object sender, GenericEventArgs<Stream> args)
{
fileName = $"{ Guid.NewGuid() }.wav";
using (var file = File.OpenWrite(Path.Combine(Directory.GetCurrentDirectory(), fileName)))
{
args.EventData.CopyTo(file);
file.Flush();
}
WaveOut waveOut = new WaveOut();
WaveFileReader reader = new WaveFileReader(fileName);
waveOut.Init(reader);
try
{
await Task.Run(() =>
{
waveOut.Play();
});
}
finally
{
File.Delete(fileName);
}
}
Run Code Online (Sandbox Code Playgroud)
程序按字符串名称查找文件并播放它.await task.run在这里不起作用.它直接跳到最后一块.