程序大体如下:
一直运行着,符合特定条件后,弹出一个窗体(Alert).
在窗体的load事件中,执行如下代码:strMusic 是音乐的路径,从数据库里取出来的.    if (!String.IsNullOrEmpty(strMusic))
    {
        MSMusicPlayer obj = new MSMusicPlayer();
        obj.Play(strMusic);
    }    //网上找的类.抄别人的.
    public class MSMusicPlayer
    {
        [DllImport("winmm.dll")]
        private static extern long mciSendString(string strCommand,
        string strReturn, int iReturnLength, IntPtr hwndCallback);        public string Status
        {
            get
            {
                string sCommand = "status MediaFile mode";
                string ret = "";
                mciSendString(sCommand, ret, 10, IntPtr.Zero);
                return ret.Trim();
            }
        }
        private void Open(string strFileName)
        {
            string sCommand = "open \"" + strFileName + "\" type mpegvideo alias MediaFile";
            string ret = null;
            mciSendString(sCommand, ret, 0, IntPtr.Zero);
        }
        /// <summary>
        /// Play Music
        /// </summary>
        /// <param name="filename">detail file's path and name</param>
        public void Play(string strFilePath)
        {
            Open(strFilePath);
            string sCommand = "play MediaFile";
            string ret = null;
            mciSendString(sCommand, ret, 0, IntPtr.Zero);
        }
        public void Stop()
        {
            string sCommand = "stop MediaFile";
            string ret = null;
            mciSendString(sCommand, ret, 0, IntPtr.Zero);
        }
        public void Pause()
        {
            string sCommand = "pause MediaFile";
            string ret = null;
            mciSendString(sCommand, ret, 0, IntPtr.Zero);
        }
    }    //点关闭,停掉音乐
    private void Alert_FormClosing(object sender, FormClosingEventArgs e)
    {
       MSMusicPlayer obj = new MSMusicPlayer();
       obj.Stop();
    }
出现的问题:
因为主程序一直在运行,当满足另一个条件时,又会弹出一个窗体.
第一种情况: 前一个关了,后一个接着前一个的音乐接着放! (库里存的是不同的音乐)
第二种情况: 前一个不关,后一个的音乐根本不放.只有前一个在放.哪位大哥懂,给看看.解决解决.谢啦.