0

我第一次单击 PLAY 按钮时,一切正常,但下一次它在此行中生成错误:

    waveOutDevice.Init(mainOutputStream);

有关错误的详细信息,请参阅屏幕截图。下面是我的代码部分:

    private void Play()
    {
        string audioFile = "temp.mp3";
        try
        {
            if (mainOutputStream != null)
                mainOutputStream = null;
            mainOutputStream = CreateInputStream(audioFile);
        }
        catch (Exception exc)
        {
            MessageBox.Show(exc.Message);
        }
        if (mainOutputStream != null)
        {
            waveOutDevice.Init(mainOutputStream);
            waveOutDevice.Play();
        }
        else
        {
            return;
        }

    }

错误代码是:-2004287486

目标站点是:{Void ThrowExceptionForHRInternal(Int32, IntPtr)}

所有这一切都超出了我的想象,所以请帮助我指出错误站点并提供一些解释(如果可能的话),当然还有解决这种情况的方法。谢谢。

错误截图


更新:

感谢您的回复。也试过了,但仍然是同样的问题。该文件再次播放,但该错误消息在延迟一段时间后仍然出现。有时,错误消息会在整个应用程序关闭几秒钟后出现。它出现很多次,一个接一个,每次播放文件时可能出现一次。

4

1 回答 1

1

错误代码为 0x88890002 ( AUDCLNT_E_ALREADY_INITIALIZED ),表示旧的输出设备未正确处理。确保您处理掉您的 waveOutDevice 并为下一次播放创建一个新设备。

于 2011-09-15T12:36:58.313 回答