NAudio,windows 服务,多线程

NAudio, windows service, multithreading

我有 windows 服务可以通过 NAudio.dll

播放 *.wav 文件(多线程)
    public static void PlayFileBackground(string fileName)
    {
        Task.Run(() => { PlayFile(fileName); });
    }

    private static void PlayFile(string fileName)
    {
        if (File.Exists(fileName) == true)
        {
            try
            {
                var manualResetEvent = new ManualResetEvent(false);
                using (var wfr = new WaveFileReader(fileName))
                using (WaveChannel32 wc = new WaveChannel32(wfr) { Volume = 1, PadWithZeroes = false })
                using (var audioOutput = new DirectSoundOut())
                {
#region play
                    audioOutput.Init(wc);                        
                    audioOutput.Play();
                    audioOutput.PlaybackStopped += (sender, e) => { manualResetEvent.Set(); }; 
                    manualResetEvent.WaitOne();
                    audioOutput.Stop();
#endregion
                }
            }
            catch (Exception exception)
            {                
                logger.Error("Error NAudio.\n{0}", exception.ToString()); //<-never don't catch
            }
        }
    }

如果区域 'play' 有评论 -> 所有作品

如果区域 'play' 未注释 -> 有时我的服务停止时没有任何错误。

我尝试附加调试器,我看到: 'System.ExecutionEngineException' 类型的未处理异常发生在 NAudio.dll

此外:'System.AccessViolationException' 类型的第一次机会异常发生在 NAudio.dll

有什么想法吗?

我找到了替换 DirectSoundOut > WaveOutEvent 的建议。 现在一切正常。谢谢斯图尔特。