首页 > 解决方案 > 是否可以在 My.Computer.Audio.Play VB.NET 上有超过 3 个重载

问题描述

我必须做一个音频背景等待完成我的代码。

My.Computer.Audio.Play(My.Resources.music, AudioPlayMode.Background, AudioPlayMode.WaitToComplete)

但它不起作用,因为:“重载解析失败,因为没有可访问的‘播放’接受这个数量的参数。”

有什么办法可以得到更多的论据?

标签: vb.netwinformsaudioarguments

解决方案


您最好的选择可能是编写一个在后台播放音频的异步方法。这样,您可以等待该方法:

Private Async Function PlayInBackgroundAsync(data As Stream) As Task
    Await Task.Run(Sub() My.Computer.Audio.Play(data, AudioPlayMode.Background)).ConfigureAwait(False)
End Function

请注意,您等待方法调用的任何方法都必须声明Async,例如

Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Await PlayInBackgroundAsync(My.Resources.music)
End Sub

使用 await 意味着在正在执行的方法中的代码完成之前不会继续执行,但 UI 也不会被阻塞。


推荐阅读