读取Debug路径下的一个歌曲文件夹,在加载窗体时候随机播放文件夹的歌曲,如程序
axWindowsMediaPlayer1.URL = muspath + "\\" + new Random().Next(1,4).ToString() + ".mp3";
            axWindowsMediaPlayer1.Ctlcontrols.play();
想加入个while循环,让它一直随机下去,这个while该怎么加?
我这么加
            bool flag=TRUE;
            while (flag)
            {
                axWindowsMediaPlayer1.URL = muspath + "\\" + new Random().Next(1, 4).ToString() + ".mp3";
                axWindowsMediaPlayer1.Ctlcontrols.play();
            }
然而,虽然生成成功,但是窗体却没有加载。这个.exe的cpu占用特高,也不提示错误,高手讲讲,这是什么情况?
我的循环加错地方啦?感谢一二提示~~~………………

解决方案 »

  1.   

    LZ 为什么要这么用呢?
    应该是一首放完了 再随机放另一首吧
    你这样一直死循环play  当然CPU受不了了
      

  2.   

    线程要休息,在While循环里面 写 
    Thread.Sleep(10);
      

  3.   

           
    在_PlayStateChange事件里判断播放状态 private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
            {
                if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded)
                {
                    //播放下一首
                }
            }
      

  4.   


    1、你的MP3文件名是怎么样的?都是数字?你可以先把文件夹里所有的MP3文件读到List<string>里,再产生一个随机数,然后用这个随机数据去获取List<string>中的路径2、给出你现在的代码
      

  5.   


    按这位兄弟所说,为什么不能这么写
    bool flag = true;
                while (flag)
                {
                    flag = false;
                    axWindowsMediaPlayer1.URL = muspath + "\\" + new Random().Next(1, 4).ToString() +              ".mp3";
                    axWindowsMediaPlayer1.Ctlcontrols.play();
                    if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded)
                    {
                        flag = true;
                    }
      

  6.   

    我也想过那么做,但是我想首先实现的功能是读取默认路径下的曲目,曲目名称都是数字。代码都写上边了,就是那么回事,做个while循环,
    让这个while循环随机读曲目。
      

  7.   

          
    有事件不用,非得自己搞个死循环判断   while (true)
                {
                    if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded)
                    {
                        axWindowsMediaPlayer1.URL = muspath + "\\" + new Random().Next(1, 4).ToString() + ".mp3";
                        axWindowsMediaPlayer1.Ctlcontrols.play();
                    }
                    Application.DoEvents();
                }
      

  8.   

    我的意思是一首歌曲以后,重新加载url。
    问题就在于,怎么知道是一首歌曲结束了?
    我想用playstate控制。该怎么控制?
      

  9.   

    继续失败~!!!!!palystatechange事件也没法控制。是不是窗体上要有这个控件?疯了~!
    还要连累大神们~!!!
      

  10.   


    死循环,放到一个线程里面通过一个事件来触发这个循环操作,可以通过timer控件间隔多长时间触发一次,放到独立线程就不会影响前台界面展示
      

  11.   

    timer控件有一个间隔时间设置,你看看多少合适就是行了,那个数量单位是毫秒