WindowsMediaPlayer组件的问题

aeh 2012-03-03 03:10:19
private void button1_Click(object sender, EventArgs e)
{
aaa:
//MessageBox.Show(axWindowsMediaPlayer1.playState.ToString());//测试点1
axWindowsMediaPlayer1.URL = @"e:\123.mp3";
axWindowsMediaPlayer1.Ctlcontrols.play();
//MessageBox.Show(axWindowsMediaPlayer1.playState.ToString());//测试点2
while (axWindowsMediaPlayer1.playState.ToString() == "wmppsStopped") ;//等待一首歌结束(播放状态为wmppsStopped)
{
//MessageBox.Show(axWindowsMediaPlayer1.playState.ToString());//测试点3
}
goto aaa;
}

本来想实现,放完一首歌,返回去继续再播放这首歌,发现一点button1就死了
1、加了几个测试点,发现,不管播放状态如何while (axWindowsMediaPlayer1.playState.ToString() == "wmppsStopped")居然都成立,即都执行下面的goto aaa;很奇怪。
2、测试点2的弹出窗口等到放完一首歌(播放器状态真正到wmppsStopped)的时候再点的时候,人为创造while (axWindowsMediaPlayer1.playState.ToString() == "wmppsStopped")成立的条件,程序居然卡死了,窗口有时能拖动有时不能拖动。猜测可能这时候真的在一直while了。

新手,烦请大家看下什么原因,再给个解决办法,或者实现功能的方式
...全文
163 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
aeh 2012-04-18
  • 打赏
  • 举报
回复
没解决,结贴
aeh 2012-03-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 nonocast 的回复:]
while当然死啦
你需要相应statechanged事件,通过事件得到一首播放完成的消息
[/Quote]

如何做,网上查有AxWMPLib._WMPOCXEvents_PlayStateChangeEvent这个东西,但是不会用,找的代码事件挂不上去。
threenewbee 2012-03-03
  • 打赏
  • 举报
回复
外侧的goto倒是可以改写成while(true);
nonocast 2012-03-03
  • 打赏
  • 举报
回复
while当然死啦
你需要相应statechanged事件,通过事件得到一首播放完成的消息
aeh 2012-03-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 caozhy 的回复:]
外侧的goto倒是可以改写成while(true);
[/Quote]
刚才试了下,改成while(true)不能实现循环播放,播一次就停止了。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧