持续播报语音后,产生灾难性故障

smaworm 2016-04-14 10:05:15
写了一个测试程序 将提前录制好的音频文件播放 代码如下

WindowsMediaPlayerClass player = new WMPLib.WindowsMediaPlayerClass();
player.currentPlaylist = player.newPlaylist("a");
player.currentPlaylist.appendItem(player.newMedia(Application.StartupPath.ToString()+ @"\语音包\请交费.wav"));
player.currentPlaylist.appendItem(player.newMedia(Application.StartupPath.ToString() + @"\语音包\十.wav"));
player.currentPlaylist.appendItem(player.newMedia(Application.StartupPath.ToString() + @"\语音包\元.wav"));
player.uiMode = "None";
player.settings.volume = 100;
player.settings.playCount = 1;

player.settings.setMode("shuffle", false); //循环播放
player.play();

可是将这段代码持续调用N次以后(具体多少次没有统计100次以上),就会产生灾难性故障,在调用的时候就一致报错,并且不能播放语音,重启电脑后运行程序,故障不会恢复。
求教高手赐教
...全文
138 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
PaulyJiang 2016-04-16
  • 打赏
  • 举报
回复
重启后是OK,应该是楼上说的问题。
tcmakebest 2016-04-14
  • 打赏
  • 举报
回复
问题比较复杂,不如先用个临时方案,写个子程序播放一遍就退出,在主程序中调用子程序,这样子程序的资源会得到释放.
xian_wwq 2016-04-14
  • 打赏
  • 举报
回复
引用 楼主 smaworm 的回复:
写了一个测试程序 将提前录制好的音频文件播放 代码如下 WindowsMediaPlayerClass player = new WMPLib.WindowsMediaPlayerClass(); player.currentPlaylist = player.newPlaylist("a"); player.currentPlaylist.appendItem(player.newMedia(Application.StartupPath.ToString()+ @"\语音包\请交费.wav")); player.currentPlaylist.appendItem(player.newMedia(Application.StartupPath.ToString() + @"\语音包\十.wav")); player.currentPlaylist.appendItem(player.newMedia(Application.StartupPath.ToString() + @"\语音包\元.wav")); player.uiMode = "None"; player.settings.volume = 100; player.settings.playCount = 1; player.settings.setMode("shuffle", false); //循环播放 player.play(); 可是将这段代码持续调用N次以后(具体多少次没有统计100次以上),就会产生灾难性故障,在调用的时候就一致报错,并且不能播放语音,重启电脑后运行程序,故障不会恢复。 求教高手赐教
循环播放中,检查内存占用、句柄数量 如果持续增长,那就是有非托管资源未释放导致。

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧