选择歌曲后 Mp3 播放器滞后 (c#)

问题描述

在filedrop中选择歌曲后,播放器冻结一段时间然后推迟 重新选择歌曲时,播放器的行为相同 延迟时间约为 10 秒,之后播放器再次正常工作。 当播放器开始播放音乐时,问题与文件丢失或按钮 3 相关

代码

using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using WMPLib;


namespace Music_Player
{

    public partial class Form1 : Form
    {
        private WMPLib.WindowsMediaPlayer Player;
        private Image pauseImage;
        private Image playImage;
        private bool isPlaying;

        public Form1()
        {
            InitializeComponent();
            button3.ImageAlign = ContentAlignment.MiddleCenter;
        }

        private void Form1_Load(object sender,EventArgs e)
        {
            Player = new WMPLib.WindowsMediaPlayer();
            Player.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange);
            Player.MediaError += new WMPLib._WMPOCXEvents_MediaErrorEventHandler(Player_MediaError);

            string startPath = Application.StartupPath;
            pauseImage = Image.FromFile(Path.Combine(startPath,"pause.png"));
            playImage = Image.FromFile(Path.Combine(startPath,"play.png"));
            button3.Image = playImage;
        }

        private void Player_PlayStateChange(int newState)
        {
            isPlaying = (WMPLib.WMPPlayState)newState == WMPLib.WMPPlayState.wmppsPlaying;
            if (isPlaying)
                button3.Image = pauseImage;
            else
                button3.Image = playImage;
        }

        private void Player_MediaError(object pMediaObject)
        {
            MessageBox.Show($"Cannot play media file {Player.URL}.");
        }

        private void button3_Click(object sender,EventArgs e)
        {
            
            if (isPlaying)
            {
                hScrollBar1.Enabled = true; 
                timer1.Enabled = true; 
                timer1.Interval = 1000;
                Player.controls.pause();
            }
            else
            {
                hScrollBar1.Enabled = true; 
                timer1.Enabled = true; 
                timer1.Interval = 1000;
                Player.controls.play();
            }
                
        }

        private void button5_Click(object sender,EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if (isPlaying)
                    Player.controls.pause();
                label5.Text = openFileDialog1.SafeFileName;
                Player.URL = openFileDialog1.FileName;
            }
        }

        private void timer1_Tick(object sender,EventArgs e)
        {
            hScrollBar1.Maximum = Convert.ToInt32(Player.currentMedia.duration);
            hScrollBar1.Value = Convert.ToInt32(Player.controls.currentPosition);

            if (Player != null)
            {
                int s = (int)Player.currentMedia.duration;
                int h = s / 3600;
                int m = (s - (h * 3600)) / 60;
                s = s - (h * 3600 + m * 60);
                label3.Text = String.Format("{0:D}:{1:D2}:{2:D2}",h,m,s);

                s = (int)Player.controls.currentPosition;
                h = s / 3600;
                m = (s - (h * 3600)) / 60;
                s = s - (h * 3600 + m * 60);
                label2.Text = String.Format("{0:D}:{1:D2}:{2:D2}",s);
            }
            else
            {
                label3.Text = "0:00:00";
                label2.Text = "0:00:00";
            }
        }

        private void hScrollBar1_Scroll(object sender,ScrollEventArgs e)
        {
            Player.controls.currentPosition = hScrollBar1.Value;
        }

        private void trackBar1_Scroll(object sender,EventArgs e)
        {
            if (trackBar1.Value == 10)
                Player.settings.volume = 100;
            if (trackBar1.Value == 9)
                Player.settings.volume = 90;
            if (trackBar1.Value == 8)
                Player.settings.volume = 80;
            if (trackBar1.Value == 7)
                Player.settings.volume = 70;
            if (trackBar1.Value == 6)
                Player.settings.volume = 60;
            if (trackBar1.Value == 5)
                Player.settings.volume = 50;
            if (trackBar1.Value == 4)
                Player.settings.volume = 40;
            if (trackBar1.Value == 3)
                Player.settings.volume = 30;
            if (trackBar1.Value == 2)
                Player.settings.volume = 20;
            if (trackBar1.Value == 1)
                Player.settings.volume = 10;
            if (trackBar1.Value == 0)
                Player.settings.volume = 0;
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)