【问题标题】:Memory leak in Windows Media PlayerWindows Media Player 中的内存泄漏
【发布时间】:2021-12-11 21:58:34
【问题描述】:

我们正在使用 WMP.dllWindows 10 IoT Enterprise LTSC build 1809 上运行 WinForms 应用程序,当前安装的版本是 12.0.17763.1821,似乎当重复音频/视频文件时,随着时间的推移,它会消耗越来越多的内存,最终会内存不足。导致应用程序崩溃。

其他 Windows Build 似乎没有这个问题:

  • 使用 WMP 版本 12.0.14393.4169 构建 1607 LTSB 运行没有任何问题。
  • 使用 WMP 版本 12.0.19041.1151 构建 21H1 Pro 运行没有任何问题。

很遗憾,因为这是 Windows 的LTSC 版本,我无法升级到更新的版本,也无法安装任何新的 WindowsMediaPlayer 版本(并且它们已经存在)以进一步调试。

所以此刻我被困在如何继续解决这个问题上。不,我们不能放弃 WMP ;-)

感谢任何帮助/提示。

【问题讨论】:

    标签: windows winforms windows-media-player axwindowsmediaplayer


    【解决方案1】:

    您是否尝试过在每个“播放”事件中明确释放对象的资源?这样的事情可能会奏效:

    string url = axWindowsMediaPlayer1.URL;
    if (axWindowsMediaPlayer1 != null) axWindowsMediaPlayer1.Dispose();
    axWindowsMediaPlayer1 = null;
    System.GC.Collect();
    axWindowsMediaPlayer1 = new AxWMPLib.AxWindowsMediaPlayer();
    axWindowsMediaPlayer1.URL = url;
    

    这会将当前的 URL 存储在一个字符串中,清除当前的 WMP 对象,收集并释放所有使用的资源,然后创建一个新的 WMP 对象来替换前一个,并将其 URL 设置为与旧对象的 URL...理论上。

    【讨论】:

    • 在通过string url = axWindowsMediaPlayer1.URL;评估 .URL 属性之前,您应该检查(axWindowsMediaPlayer1 != null)
    猜你喜欢
    • 2014-04-09
    • 2014-05-03
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多