NAudio,Windows服务,多线程
Posted
技术标签:
【中文标题】NAudio,Windows服务,多线程【英文标题】:NAudio, windows service, multithreading 【发布时间】:2015-03-22 21:23:54 【问题描述】:我有通过 NAudio.dll 播放 *.wav 文件(多线程)的 Windows 服务
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.\n0", exception.ToString()); //<-never don't catch
如果区域“播放”评论 -> 所有作品
如果区域“播放”未注释 -> 有时我的服务会停止而没有任何错误。
我尝试使用调试器附加,我看到: NAudio.dll 中出现“System.ExecutionEngineException”类型的未处理异常
另外:NAudio.dll 中出现了“System.AccessViolationException”类型的第一次机会异常
有什么想法吗?
【问题讨论】:
naudio.codeplex.com/discussions/574521 【参考方案1】:我找到了替换 DirectSoundOut > WaveOutEvent 的建议。 现在一切正常。谢谢斯图尔特。
【讨论】:
以上是关于NAudio,Windows服务,多线程的主要内容,如果未能解决你的问题,请参考以下文章
多线程:防止 Visual Studio 阻塞特定线程 [重复]
利用TCP服务器接收多客户端的音频数据,通过Naudio进行播放及音频处理TCP服务器