小编Rod*_*nik的帖子

等待Task.Run无法在void内部工作?

我试图在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在这里不起作用.它直接跳到最后一块.

c# naudio

-2
推荐指数
1
解决办法
76
查看次数

标签 统计

c# ×1

naudio ×1