我想用线程开起音乐,但怎么能让它停止呢
我现在的问题就是无论如何,只要用线程开起的音乐,就关闭不了音乐播放,应该怎么办呢,
以下是测试代码
Audio a;
Thread t;
private void button1_Click(object sender, EventArgs e)
{
t = new Thread(new ThreadStart(abc));
t.Start();
a = new Audio();
}
private void abc()
{
while (true)
{
a.Play(@"F:\TT\ZhiLi\ZhiLi\ZhiLi\bin\Debug\wav\2-5.wav");
Thread.Sleep(50);
}
}
private void button3_Click(object sender, EventArgs e)
{
a.Stop();
}
音乐类
public class Audio
{
[DllImport("winmm.dll")]
private static extern int mciSendString
(
string lpstrCommand,
string lpstrReturnString,
int uReturnLength,
int hwndCallback
);
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern int GetShortPathName
(
[MarshalAs(UnmanagedType.LPTStr)] string path,
[MarshalAs(UnmanagedType.LPTStr)] StringBuilder shortPath,
int shortPathLength
);
public Audio()
{
}
public void Play(string FileName)
{
StringBuilder shortPathTemp = new StringBuilder(255);
int result = GetShortPathName(FileName, shortPathTemp, shortPathTemp.Capacity);
string ShortPath = shortPathTemp.ToString();
mciSendString("open " + ShortPath + " alias song", "", 0, 0);
mciSendString("play song", "", 0, 0);
}
public void Stop()
{
mciSendString("stop song", "", 0, 0);
mciSendString("close song", "", 0, 0);
}
public void Pause()
{
mciSendString("pause song", "", 0, 0);
}
public void Close()
{
mciSendString("close song", "", 0, 0);
}
}
我现在的需求是我想FORM窗口初始化的时候,边创建控件边播放音乐,如果不用线程的话它只会播放完音乐后才能显示界面
如何我必须要用线程怎么办呢