首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >游戏在退出后持有wma文件的句柄

游戏在退出后持有wma文件的句柄
EN

Stack Overflow用户
提问于 2012-06-26 22:48:36
回答 1查看 83关注 0票数 2

我有一个xna游戏导出的dll文件。运行游戏的所有东西(除了内容)都在这个库中,特别是主游戏类。

在另一个程序集中,我加载游戏dll,实例化游戏类并在其上调用Run()。这将运行游戏。之后,当游戏结束时,我调用Dispose()来完全关闭游戏。加载dll的主程序仍在运行。

到目前为止,没有问题。

然而,当游戏使用带有MediaPlayerSong时,似乎游戏并没有完全关闭。在游戏的内容目录中,有与歌曲对应的.xnb.wma文件。尽管游戏不再运行,但我不能删除.wma文件,因为进程(我的主程序)仍然持有该文件的句柄。删除.xnb文件不会出现任何问题。

我发现游戏创建了一个额外的线程,该线程在游戏退出后不会关闭。我怀疑这个线程是一个仍然持有文件句柄的媒体播放器线程。有没有办法迫使xna放弃文件句柄?也许杀死额外的线程将是一个选择(尽管它不是很好),但如何做到这一点呢?

MediaPlayer上调用Stop()不会更改此行为。

EN

回答 1

Stack Overflow用户

发布于 2012-08-12 11:59:49

通常,在创建XNA游戏时,一般做法是根本不使用MediaPlayer,而是使用Sound & SoundInstance替代方案。尽管它们可能使用不同的声音格式,但它们的性能更好,因为MediaPlayer非常庞大,而且在您的情况下,还存在线程问题。

我可能错了,但我认为MediaPlayer实际上将本地机器称为实际的MediaPlayer。这可能是为什么很难停止它的线程的原因之一。

这取决于您,但我会完全避免使用MediaPlayer。它被认为是对我的诅咒:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11209973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档