我有一个在 dll 文件中导出的 xna 游戏。运行游戏的所有东西(除了内容)都在这个库中,尤其是主游戏类。
在另一个程序集中,我加载游戏 dll,实例化游戏类并调用Run()
它。这将运行游戏。之后,当游戏关闭时,我调用Dispose()
以完全关闭游戏。主程序(加载 dll 的那个)仍在运行。
到这里为止,没有问题。
但是,当游戏使用 aSong
和 时MediaPlayer
,似乎游戏并没有完全关闭。在游戏的内容目录中,有歌曲的相应文件.xnb
和.wma
文件。虽然游戏不再运行,但我无法删除该.wma
文件,因为一个进程(我的主程序)仍然持有该文件的句柄。该.xnb
文件可以毫无问题地删除。
我发现游戏创建了一个额外的线程,游戏退出后没有关闭。我怀疑这个线程是仍然持有文件句柄的媒体播放器线程。有什么办法可以强制 xna 放弃文件句柄?也许杀死额外的线程是一种选择(虽然它不是很好),但如何做到这一点?
调用不会改变这种行为Stop()
。MediaPlayer