首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WindowsMediaPlayer (WMPLib)音频突然消失

WindowsMediaPlayer (WMPLib)音频突然消失
EN

Stack Overflow用户
提问于 2013-07-17 09:52:56
回答 1查看 1.2K关注 0票数 1

我正在尝试在winforms应用程序中播放音频。为此,我使用以下命令:

代码语言:javascript
复制
           WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
           string path = "C:\\Windows\\Media\\Ring10.wav";
           wplayer.URL = path;
           wplayer.controls.play();

我使用WindowsMediaPlayer类,因为其他类不会以我的音频文件所在的格式播放音频。在我将Process.GetProcesses();Process.GetProcessesByName...添加到计时器的tick事件之前,上面的代码一直有效。

代码语言:javascript
复制
    private void timer1_Tick(object sender, EventArgs e)
    {
        Process[] processes = Process.GetProcesses();
    }

第一次计时器滴答作响并执行Process.GetProcesses();时,音频将继续播放。但是,第二次计时器滴答作响时,音频就会停止。如果计时器与播放音频的计时器的形式相同,或者计时器的形式不同,就会发生这种情况。我不知道为什么会发生这样的事情。导致此问题的原因是什么?

EN

回答 1

Stack Overflow用户

发布于 2013-07-17 10:27:36

等等..。

代码语言:javascript
复制
       WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
       string path = "C:\\Windows\\Media\\Ring10.wav";
       wplayer.URL = path;
       wplayer.controls.play();

您是否在某个地方保留了对wplayer的引用?就像表单上的私有字段一样?

如果不是,我认为垃圾收集器会随机地把它捡起来并杀死它。可能只是巧合,获得一个进程列表会生成足够多的临时垃圾,以便GC开始使用。

尝试将其更改为

代码语言:javascript
复制
       private WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();

[编辑:如果您有更多问题,请尝试下面的最小示例-这应该可以很好地工作:

代码语言:javascript
复制
public partial class Form1 : Form
{
    Timer timer = new Timer();
    private WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();

    public Form1()
    {
        InitializeComponent();

        string path = "C:\\Users\\Public\\Music\\Sample Music\\Kalimba.mp3";
        wplayer.URL = path;
        wplayer.controls.play();

        timer.Interval = 2000;
        timer.Tick += timer_Tick;
        timer.Start();
    }

    void timer_Tick(object sender, EventArgs e)
    {
        Process[] processes = Process.GetProcesses();
        Debug.WriteLine(processes.Length + " running processes");
    }


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

https://stackoverflow.com/questions/17689830

复制
相关文章

相似问题

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