我有以下代码......
For Each dgvRow In bout_grid.Rows
vfile = dgvRow.Cells("FileName").Value
video.FileName = "D:\bee\" + vfile
vduration = video.Duration
vposition = video.Position
If vduration > 0 The
bplayer_out.URL = "D:\bee\" + vfile
bplayer_out.Ctlcontrols.play()
End If
Next dgvRow
但它只播放一个视频而不是停止但我希望它应该播放datagridview中的每个视频,即bout_grid ....我试过了
System.Threading.Thread.Sleep = vduration
但它停止了我能解决的每一件事
答案 0 :(得分:2)
是的,您无法在Windows窗体或WPF应用中使用此类代码。 Windows应用程序是事件驱动的,您无法在不阻止UI更新的情况下编写长循环。
Windows Media Player会在发生重大事件时生成事件。就像PlayStateChange event一样。为该事件编写一个事件处理程序,以索引列表中的下一个项目。请注意,WMP还支持播放列表。
在Visual Basic中编写WMP的最终资源是MSDN Library topic。看看提供的样品。
答案 1 :(得分:1)
bplayer_out.Ctlcontrols.play()结束后会发生什么?弹出一个对话框?例外?这两个结果都会停止每个循环。
使用调试器运行它,并在 bplayer_out.Ctlcontrols.play()
之后查看控件返回的位置答案 2 :(得分:1)
bplayer_out.Ctlcontrols.play()很可能是异步的,就像许多其他声音API一样。因此,当第一个声音仍然很忙时,可能会立即播放下一个声音 - 您可能只听到第一个声音。
什么类型 bplayer ?